Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/clone/wp-inclu.../sodium_c.../src/Core32
File: BLAKE2b.php
<?php
[0] Fix | Delete
[1] Fix | Delete
if (class_exists('ParagonIE_Sodium_Core_BLAKE2b', false)) {
[2] Fix | Delete
return;
[3] Fix | Delete
}
[4] Fix | Delete
[5] Fix | Delete
/**
[6] Fix | Delete
* Class ParagonIE_Sodium_Core_BLAKE2b
[7] Fix | Delete
*
[8] Fix | Delete
* Based on the work of Devi Mandiri in devi/salt.
[9] Fix | Delete
*/
[10] Fix | Delete
abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Util
[11] Fix | Delete
{
[12] Fix | Delete
/**
[13] Fix | Delete
* @var SplFixedArray
[14] Fix | Delete
*/
[15] Fix | Delete
public static $iv;
[16] Fix | Delete
[17] Fix | Delete
/**
[18] Fix | Delete
* @var array<int, array<int, int>>
[19] Fix | Delete
*/
[20] Fix | Delete
public static $sigma = array(
[21] Fix | Delete
array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
[22] Fix | Delete
array( 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3),
[23] Fix | Delete
array( 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4),
[24] Fix | Delete
array( 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8),
[25] Fix | Delete
array( 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13),
[26] Fix | Delete
array( 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9),
[27] Fix | Delete
array( 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11),
[28] Fix | Delete
array( 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10),
[29] Fix | Delete
array( 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5),
[30] Fix | Delete
array( 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0),
[31] Fix | Delete
array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
[32] Fix | Delete
array( 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3)
[33] Fix | Delete
);
[34] Fix | Delete
[35] Fix | Delete
const BLOCKBYTES = 128;
[36] Fix | Delete
const OUTBYTES = 64;
[37] Fix | Delete
const KEYBYTES = 64;
[38] Fix | Delete
[39] Fix | Delete
/**
[40] Fix | Delete
* Turn two 32-bit integers into a fixed array representing a 64-bit integer.
[41] Fix | Delete
*
[42] Fix | Delete
* @internal You should not use this directly from another application
[43] Fix | Delete
*
[44] Fix | Delete
* @param int $high
[45] Fix | Delete
* @param int $low
[46] Fix | Delete
* @return ParagonIE_Sodium_Core32_Int64
[47] Fix | Delete
* @throws SodiumException
[48] Fix | Delete
* @throws TypeError
[49] Fix | Delete
*/
[50] Fix | Delete
public static function new64($high, $low)
[51] Fix | Delete
{
[52] Fix | Delete
return ParagonIE_Sodium_Core32_Int64::fromInts($low, $high);
[53] Fix | Delete
}
[54] Fix | Delete
[55] Fix | Delete
/**
[56] Fix | Delete
* Convert an arbitrary number into an SplFixedArray of two 32-bit integers
[57] Fix | Delete
* that represents a 64-bit integer.
[58] Fix | Delete
*
[59] Fix | Delete
* @internal You should not use this directly from another application
[60] Fix | Delete
*
[61] Fix | Delete
* @param int $num
[62] Fix | Delete
* @return ParagonIE_Sodium_Core32_Int64
[63] Fix | Delete
* @throws SodiumException
[64] Fix | Delete
* @throws TypeError
[65] Fix | Delete
*/
[66] Fix | Delete
protected static function to64($num)
[67] Fix | Delete
{
[68] Fix | Delete
list($hi, $lo) = self::numericTo64BitInteger($num);
[69] Fix | Delete
return self::new64($hi, $lo);
[70] Fix | Delete
}
[71] Fix | Delete
[72] Fix | Delete
/**
[73] Fix | Delete
* Adds two 64-bit integers together, returning their sum as a SplFixedArray
[74] Fix | Delete
* containing two 32-bit integers (representing a 64-bit integer).
[75] Fix | Delete
*
[76] Fix | Delete
* @internal You should not use this directly from another application
[77] Fix | Delete
*
[78] Fix | Delete
* @param ParagonIE_Sodium_Core32_Int64 $x
[79] Fix | Delete
* @param ParagonIE_Sodium_Core32_Int64 $y
[80] Fix | Delete
* @return ParagonIE_Sodium_Core32_Int64
[81] Fix | Delete
*/
[82] Fix | Delete
protected static function add64($x, $y)
[83] Fix | Delete
{
[84] Fix | Delete
return $x->addInt64($y);
[85] Fix | Delete
}
[86] Fix | Delete
[87] Fix | Delete
/**
[88] Fix | Delete
* @internal You should not use this directly from another application
[89] Fix | Delete
*
[90] Fix | Delete
* @param ParagonIE_Sodium_Core32_Int64 $x
[91] Fix | Delete
* @param ParagonIE_Sodium_Core32_Int64 $y
[92] Fix | Delete
* @param ParagonIE_Sodium_Core32_Int64 $z
[93] Fix | Delete
* @return ParagonIE_Sodium_Core32_Int64
[94] Fix | Delete
*/
[95] Fix | Delete
public static function add364($x, $y, $z)
[96] Fix | Delete
{
[97] Fix | Delete
return $x->addInt64($y)->addInt64($z);
[98] Fix | Delete
}
[99] Fix | Delete
[100] Fix | Delete
/**
[101] Fix | Delete
* @internal You should not use this directly from another application
[102] Fix | Delete
*
[103] Fix | Delete
* @param ParagonIE_Sodium_Core32_Int64 $x
[104] Fix | Delete
* @param ParagonIE_Sodium_Core32_Int64 $y
[105] Fix | Delete
* @return ParagonIE_Sodium_Core32_Int64
[106] Fix | Delete
* @throws TypeError
[107] Fix | Delete
*/
[108] Fix | Delete
public static function xor64(ParagonIE_Sodium_Core32_Int64 $x, ParagonIE_Sodium_Core32_Int64 $y)
[109] Fix | Delete
{
[110] Fix | Delete
return $x->xorInt64($y);
[111] Fix | Delete
}
[112] Fix | Delete
[113] Fix | Delete
/**
[114] Fix | Delete
* @internal You should not use this directly from another application
[115] Fix | Delete
*
[116] Fix | Delete
* @param ParagonIE_Sodium_Core32_Int64 $x
[117] Fix | Delete
* @param int $c
[118] Fix | Delete
* @return ParagonIE_Sodium_Core32_Int64
[119] Fix | Delete
* @throws SodiumException
[120] Fix | Delete
* @throws TypeError
[121] Fix | Delete
*/
[122] Fix | Delete
public static function rotr64(ParagonIE_Sodium_Core32_Int64 $x, $c)
[123] Fix | Delete
{
[124] Fix | Delete
return $x->rotateRight($c);
[125] Fix | Delete
}
[126] Fix | Delete
[127] Fix | Delete
/**
[128] Fix | Delete
* @internal You should not use this directly from another application
[129] Fix | Delete
*
[130] Fix | Delete
* @param SplFixedArray $x
[131] Fix | Delete
* @param int $i
[132] Fix | Delete
* @return ParagonIE_Sodium_Core32_Int64
[133] Fix | Delete
* @throws SodiumException
[134] Fix | Delete
* @throws TypeError
[135] Fix | Delete
*/
[136] Fix | Delete
public static function load64($x, $i)
[137] Fix | Delete
{
[138] Fix | Delete
/** @var int $l */
[139] Fix | Delete
$l = (int) ($x[$i])
[140] Fix | Delete
| ((int) ($x[$i+1]) << 8)
[141] Fix | Delete
| ((int) ($x[$i+2]) << 16)
[142] Fix | Delete
| ((int) ($x[$i+3]) << 24);
[143] Fix | Delete
/** @var int $h */
[144] Fix | Delete
$h = (int) ($x[$i+4])
[145] Fix | Delete
| ((int) ($x[$i+5]) << 8)
[146] Fix | Delete
| ((int) ($x[$i+6]) << 16)
[147] Fix | Delete
| ((int) ($x[$i+7]) << 24);
[148] Fix | Delete
return self::new64($h, $l);
[149] Fix | Delete
}
[150] Fix | Delete
[151] Fix | Delete
/**
[152] Fix | Delete
* @internal You should not use this directly from another application
[153] Fix | Delete
*
[154] Fix | Delete
* @param SplFixedArray $x
[155] Fix | Delete
* @param int $i
[156] Fix | Delete
* @param ParagonIE_Sodium_Core32_Int64 $u
[157] Fix | Delete
* @return void
[158] Fix | Delete
* @throws TypeError
[159] Fix | Delete
* @psalm-suppress MixedArgument
[160] Fix | Delete
* @psalm-suppress MixedAssignment
[161] Fix | Delete
* @psalm-suppress MixedArrayAccess
[162] Fix | Delete
* @psalm-suppress MixedArrayAssignment
[163] Fix | Delete
* @psalm-suppress MixedArrayOffset
[164] Fix | Delete
*/
[165] Fix | Delete
public static function store64(SplFixedArray $x, $i, ParagonIE_Sodium_Core32_Int64 $u)
[166] Fix | Delete
{
[167] Fix | Delete
$v = clone $u;
[168] Fix | Delete
$maxLength = $x->getSize() - 1;
[169] Fix | Delete
for ($j = 0; $j < 8; ++$j) {
[170] Fix | Delete
$k = 3 - ($j >> 1);
[171] Fix | Delete
$x[$i] = $v->limbs[$k] & 0xff;
[172] Fix | Delete
if (++$i > $maxLength) {
[173] Fix | Delete
return;
[174] Fix | Delete
}
[175] Fix | Delete
$v->limbs[$k] >>= 8;
[176] Fix | Delete
}
[177] Fix | Delete
}
[178] Fix | Delete
[179] Fix | Delete
/**
[180] Fix | Delete
* This just sets the $iv static variable.
[181] Fix | Delete
*
[182] Fix | Delete
* @internal You should not use this directly from another application
[183] Fix | Delete
*
[184] Fix | Delete
* @return void
[185] Fix | Delete
* @throws SodiumException
[186] Fix | Delete
* @throws TypeError
[187] Fix | Delete
*/
[188] Fix | Delete
public static function pseudoConstructor()
[189] Fix | Delete
{
[190] Fix | Delete
static $called = false;
[191] Fix | Delete
if ($called) {
[192] Fix | Delete
return;
[193] Fix | Delete
}
[194] Fix | Delete
self::$iv = new SplFixedArray(8);
[195] Fix | Delete
self::$iv[0] = self::new64(0x6a09e667, 0xf3bcc908);
[196] Fix | Delete
self::$iv[1] = self::new64(0xbb67ae85, 0x84caa73b);
[197] Fix | Delete
self::$iv[2] = self::new64(0x3c6ef372, 0xfe94f82b);
[198] Fix | Delete
self::$iv[3] = self::new64(0xa54ff53a, 0x5f1d36f1);
[199] Fix | Delete
self::$iv[4] = self::new64(0x510e527f, 0xade682d1);
[200] Fix | Delete
self::$iv[5] = self::new64(0x9b05688c, 0x2b3e6c1f);
[201] Fix | Delete
self::$iv[6] = self::new64(0x1f83d9ab, 0xfb41bd6b);
[202] Fix | Delete
self::$iv[7] = self::new64(0x5be0cd19, 0x137e2179);
[203] Fix | Delete
[204] Fix | Delete
$called = true;
[205] Fix | Delete
}
[206] Fix | Delete
[207] Fix | Delete
/**
[208] Fix | Delete
* Returns a fresh BLAKE2 context.
[209] Fix | Delete
*
[210] Fix | Delete
* @internal You should not use this directly from another application
[211] Fix | Delete
*
[212] Fix | Delete
* @return SplFixedArray
[213] Fix | Delete
* @throws TypeError
[214] Fix | Delete
* @psalm-suppress MixedArgument
[215] Fix | Delete
* @psalm-suppress MixedAssignment
[216] Fix | Delete
* @psalm-suppress MixedArrayAccess
[217] Fix | Delete
* @psalm-suppress MixedArrayAssignment
[218] Fix | Delete
* @psalm-suppress MixedArrayOffset
[219] Fix | Delete
* @throws SodiumException
[220] Fix | Delete
* @throws TypeError
[221] Fix | Delete
*/
[222] Fix | Delete
protected static function context()
[223] Fix | Delete
{
[224] Fix | Delete
$ctx = new SplFixedArray(6);
[225] Fix | Delete
$ctx[0] = new SplFixedArray(8); // h
[226] Fix | Delete
$ctx[1] = new SplFixedArray(2); // t
[227] Fix | Delete
$ctx[2] = new SplFixedArray(2); // f
[228] Fix | Delete
$ctx[3] = new SplFixedArray(256); // buf
[229] Fix | Delete
$ctx[4] = 0; // buflen
[230] Fix | Delete
$ctx[5] = 0; // last_node (uint8_t)
[231] Fix | Delete
[232] Fix | Delete
for ($i = 8; $i--;) {
[233] Fix | Delete
$ctx[0][$i] = self::$iv[$i];
[234] Fix | Delete
}
[235] Fix | Delete
for ($i = 256; $i--;) {
[236] Fix | Delete
$ctx[3][$i] = 0;
[237] Fix | Delete
}
[238] Fix | Delete
[239] Fix | Delete
$zero = self::new64(0, 0);
[240] Fix | Delete
$ctx[1][0] = $zero;
[241] Fix | Delete
$ctx[1][1] = $zero;
[242] Fix | Delete
$ctx[2][0] = $zero;
[243] Fix | Delete
$ctx[2][1] = $zero;
[244] Fix | Delete
[245] Fix | Delete
return $ctx;
[246] Fix | Delete
}
[247] Fix | Delete
[248] Fix | Delete
/**
[249] Fix | Delete
* @internal You should not use this directly from another application
[250] Fix | Delete
*
[251] Fix | Delete
* @param SplFixedArray $ctx
[252] Fix | Delete
* @param SplFixedArray $buf
[253] Fix | Delete
* @return void
[254] Fix | Delete
* @throws SodiumException
[255] Fix | Delete
* @throws TypeError
[256] Fix | Delete
* @psalm-suppress MixedArgument
[257] Fix | Delete
* @psalm-suppress MixedArrayAccess
[258] Fix | Delete
* @psalm-suppress MixedArrayAssignment
[259] Fix | Delete
* @psalm-suppress MixedAssignment
[260] Fix | Delete
*/
[261] Fix | Delete
protected static function compress(SplFixedArray $ctx, SplFixedArray $buf)
[262] Fix | Delete
{
[263] Fix | Delete
$m = new SplFixedArray(16);
[264] Fix | Delete
$v = new SplFixedArray(16);
[265] Fix | Delete
[266] Fix | Delete
for ($i = 16; $i--;) {
[267] Fix | Delete
$m[$i] = self::load64($buf, $i << 3);
[268] Fix | Delete
}
[269] Fix | Delete
[270] Fix | Delete
for ($i = 8; $i--;) {
[271] Fix | Delete
$v[$i] = $ctx[0][$i];
[272] Fix | Delete
}
[273] Fix | Delete
[274] Fix | Delete
$v[ 8] = self::$iv[0];
[275] Fix | Delete
$v[ 9] = self::$iv[1];
[276] Fix | Delete
$v[10] = self::$iv[2];
[277] Fix | Delete
$v[11] = self::$iv[3];
[278] Fix | Delete
[279] Fix | Delete
$v[12] = self::xor64($ctx[1][0], self::$iv[4]);
[280] Fix | Delete
$v[13] = self::xor64($ctx[1][1], self::$iv[5]);
[281] Fix | Delete
$v[14] = self::xor64($ctx[2][0], self::$iv[6]);
[282] Fix | Delete
$v[15] = self::xor64($ctx[2][1], self::$iv[7]);
[283] Fix | Delete
[284] Fix | Delete
for ($r = 0; $r < 12; ++$r) {
[285] Fix | Delete
$v = self::G($r, 0, 0, 4, 8, 12, $v, $m);
[286] Fix | Delete
$v = self::G($r, 1, 1, 5, 9, 13, $v, $m);
[287] Fix | Delete
$v = self::G($r, 2, 2, 6, 10, 14, $v, $m);
[288] Fix | Delete
$v = self::G($r, 3, 3, 7, 11, 15, $v, $m);
[289] Fix | Delete
$v = self::G($r, 4, 0, 5, 10, 15, $v, $m);
[290] Fix | Delete
$v = self::G($r, 5, 1, 6, 11, 12, $v, $m);
[291] Fix | Delete
$v = self::G($r, 6, 2, 7, 8, 13, $v, $m);
[292] Fix | Delete
$v = self::G($r, 7, 3, 4, 9, 14, $v, $m);
[293] Fix | Delete
}
[294] Fix | Delete
[295] Fix | Delete
for ($i = 8; $i--;) {
[296] Fix | Delete
$ctx[0][$i] = self::xor64(
[297] Fix | Delete
$ctx[0][$i], self::xor64($v[$i], $v[$i+8])
[298] Fix | Delete
);
[299] Fix | Delete
}
[300] Fix | Delete
}
[301] Fix | Delete
[302] Fix | Delete
/**
[303] Fix | Delete
* @internal You should not use this directly from another application
[304] Fix | Delete
*
[305] Fix | Delete
* @param int $r
[306] Fix | Delete
* @param int $i
[307] Fix | Delete
* @param int $a
[308] Fix | Delete
* @param int $b
[309] Fix | Delete
* @param int $c
[310] Fix | Delete
* @param int $d
[311] Fix | Delete
* @param SplFixedArray $v
[312] Fix | Delete
* @param SplFixedArray $m
[313] Fix | Delete
* @return SplFixedArray
[314] Fix | Delete
* @throws SodiumException
[315] Fix | Delete
* @throws TypeError
[316] Fix | Delete
* @psalm-suppress MixedArgument
[317] Fix | Delete
* @psalm-suppress MixedArrayOffset
[318] Fix | Delete
*/
[319] Fix | Delete
public static function G($r, $i, $a, $b, $c, $d, SplFixedArray $v, SplFixedArray $m)
[320] Fix | Delete
{
[321] Fix | Delete
$v[$a] = self::add364($v[$a], $v[$b], $m[self::$sigma[$r][$i << 1]]);
[322] Fix | Delete
$v[$d] = self::rotr64(self::xor64($v[$d], $v[$a]), 32);
[323] Fix | Delete
$v[$c] = self::add64($v[$c], $v[$d]);
[324] Fix | Delete
$v[$b] = self::rotr64(self::xor64($v[$b], $v[$c]), 24);
[325] Fix | Delete
$v[$a] = self::add364($v[$a], $v[$b], $m[self::$sigma[$r][($i << 1) + 1]]);
[326] Fix | Delete
$v[$d] = self::rotr64(self::xor64($v[$d], $v[$a]), 16);
[327] Fix | Delete
$v[$c] = self::add64($v[$c], $v[$d]);
[328] Fix | Delete
$v[$b] = self::rotr64(self::xor64($v[$b], $v[$c]), 63);
[329] Fix | Delete
return $v;
[330] Fix | Delete
}
[331] Fix | Delete
[332] Fix | Delete
/**
[333] Fix | Delete
* @internal You should not use this directly from another application
[334] Fix | Delete
*
[335] Fix | Delete
* @param SplFixedArray $ctx
[336] Fix | Delete
* @param int $inc
[337] Fix | Delete
* @return void
[338] Fix | Delete
* @throws SodiumException
[339] Fix | Delete
* @throws TypeError
[340] Fix | Delete
* @psalm-suppress MixedArgument
[341] Fix | Delete
* @psalm-suppress MixedArrayAccess
[342] Fix | Delete
* @psalm-suppress MixedArrayAssignment
[343] Fix | Delete
*/
[344] Fix | Delete
public static function increment_counter($ctx, $inc)
[345] Fix | Delete
{
[346] Fix | Delete
if ($inc < 0) {
[347] Fix | Delete
throw new SodiumException('Increasing by a negative number makes no sense.');
[348] Fix | Delete
}
[349] Fix | Delete
$t = self::to64($inc);
[350] Fix | Delete
# S->t is $ctx[1] in our implementation
[351] Fix | Delete
[352] Fix | Delete
# S->t[0] = ( uint64_t )( t >> 0 );
[353] Fix | Delete
$ctx[1][0] = self::add64($ctx[1][0], $t);
[354] Fix | Delete
[355] Fix | Delete
# S->t[1] += ( S->t[0] < inc );
[356] Fix | Delete
if (!($ctx[1][0] instanceof ParagonIE_Sodium_Core32_Int64)) {
[357] Fix | Delete
throw new TypeError('Not an int64');
[358] Fix | Delete
}
[359] Fix | Delete
/** @var ParagonIE_Sodium_Core32_Int64 $c*/
[360] Fix | Delete
$c = $ctx[1][0];
[361] Fix | Delete
if ($c->isLessThanInt($inc)) {
[362] Fix | Delete
$ctx[1][1] = self::add64($ctx[1][1], self::to64(1));
[363] Fix | Delete
}
[364] Fix | Delete
}
[365] Fix | Delete
[366] Fix | Delete
/**
[367] Fix | Delete
* @internal You should not use this directly from another application
[368] Fix | Delete
*
[369] Fix | Delete
* @param SplFixedArray $ctx
[370] Fix | Delete
* @param SplFixedArray $p
[371] Fix | Delete
* @param int $plen
[372] Fix | Delete
* @return void
[373] Fix | Delete
* @throws SodiumException
[374] Fix | Delete
* @throws TypeError
[375] Fix | Delete
* @psalm-suppress MixedArgument
[376] Fix | Delete
* @psalm-suppress MixedAssignment
[377] Fix | Delete
* @psalm-suppress MixedArrayAccess
[378] Fix | Delete
* @psalm-suppress MixedArrayAssignment
[379] Fix | Delete
* @psalm-suppress MixedArrayOffset
[380] Fix | Delete
* @psalm-suppress MixedMethodCall
[381] Fix | Delete
* @psalm-suppress MixedOperand
[382] Fix | Delete
*/
[383] Fix | Delete
public static function update(SplFixedArray $ctx, SplFixedArray $p, $plen)
[384] Fix | Delete
{
[385] Fix | Delete
self::pseudoConstructor();
[386] Fix | Delete
[387] Fix | Delete
$offset = 0;
[388] Fix | Delete
while ($plen > 0) {
[389] Fix | Delete
$left = $ctx[4];
[390] Fix | Delete
$fill = 256 - $left;
[391] Fix | Delete
[392] Fix | Delete
if ($plen > $fill) {
[393] Fix | Delete
# memcpy( S->buf + left, in, fill ); /* Fill buffer */
[394] Fix | Delete
for ($i = $fill; $i--;) {
[395] Fix | Delete
$ctx[3][$i + $left] = $p[$i + $offset];
[396] Fix | Delete
}
[397] Fix | Delete
[398] Fix | Delete
# S->buflen += fill;
[399] Fix | Delete
$ctx[4] += $fill;
[400] Fix | Delete
[401] Fix | Delete
# blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES );
[402] Fix | Delete
self::increment_counter($ctx, 128);
[403] Fix | Delete
[404] Fix | Delete
# blake2b_compress( S, S->buf ); /* Compress */
[405] Fix | Delete
self::compress($ctx, $ctx[3]);
[406] Fix | Delete
[407] Fix | Delete
# memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); /* Shift buffer left */
[408] Fix | Delete
for ($i = 128; $i--;) {
[409] Fix | Delete
$ctx[3][$i] = $ctx[3][$i + 128];
[410] Fix | Delete
}
[411] Fix | Delete
[412] Fix | Delete
# S->buflen -= BLAKE2B_BLOCKBYTES;
[413] Fix | Delete
$ctx[4] -= 128;
[414] Fix | Delete
[415] Fix | Delete
# in += fill;
[416] Fix | Delete
$offset += $fill;
[417] Fix | Delete
[418] Fix | Delete
# inlen -= fill;
[419] Fix | Delete
$plen -= $fill;
[420] Fix | Delete
} else {
[421] Fix | Delete
for ($i = $plen; $i--;) {
[422] Fix | Delete
$ctx[3][$i + $left] = $p[$i + $offset];
[423] Fix | Delete
}
[424] Fix | Delete
$ctx[4] += $plen;
[425] Fix | Delete
$offset += $plen;
[426] Fix | Delete
$plen -= $plen;
[427] Fix | Delete
}
[428] Fix | Delete
}
[429] Fix | Delete
}
[430] Fix | Delete
[431] Fix | Delete
/**
[432] Fix | Delete
* @internal You should not use this directly from another application
[433] Fix | Delete
*
[434] Fix | Delete
* @param SplFixedArray $ctx
[435] Fix | Delete
* @param SplFixedArray $out
[436] Fix | Delete
* @return SplFixedArray
[437] Fix | Delete
* @throws SodiumException
[438] Fix | Delete
* @throws TypeError
[439] Fix | Delete
* @psalm-suppress MixedArgument
[440] Fix | Delete
* @psalm-suppress MixedAssignment
[441] Fix | Delete
* @psalm-suppress MixedArrayAccess
[442] Fix | Delete
* @psalm-suppress MixedArrayAssignment
[443] Fix | Delete
* @psalm-suppress MixedArrayOffset
[444] Fix | Delete
* @psalm-suppress MixedMethodCall
[445] Fix | Delete
* @psalm-suppress MixedOperand
[446] Fix | Delete
*/
[447] Fix | Delete
public static function finish(SplFixedArray $ctx, SplFixedArray $out)
[448] Fix | Delete
{
[449] Fix | Delete
self::pseudoConstructor();
[450] Fix | Delete
if ($ctx[4] > 128) {
[451] Fix | Delete
self::increment_counter($ctx, 128);
[452] Fix | Delete
self::compress($ctx, $ctx[3]);
[453] Fix | Delete
$ctx[4] -= 128;
[454] Fix | Delete
if ($ctx[4] > 128) {
[455] Fix | Delete
throw new SodiumException('Failed to assert that buflen <= 128 bytes');
[456] Fix | Delete
}
[457] Fix | Delete
for ($i = $ctx[4]; $i--;) {
[458] Fix | Delete
$ctx[3][$i] = $ctx[3][$i + 128];
[459] Fix | Delete
}
[460] Fix | Delete
}
[461] Fix | Delete
[462] Fix | Delete
self::increment_counter($ctx, $ctx[4]);
[463] Fix | Delete
$ctx[2][0] = self::new64(0xffffffff, 0xffffffff);
[464] Fix | Delete
[465] Fix | Delete
for ($i = 256 - $ctx[4]; $i--;) {
[466] Fix | Delete
/** @var int $i */
[467] Fix | Delete
$ctx[3][$i + $ctx[4]] = 0;
[468] Fix | Delete
}
[469] Fix | Delete
[470] Fix | Delete
self::compress($ctx, $ctx[3]);
[471] Fix | Delete
[472] Fix | Delete
$i = (int) (($out->getSize() - 1) / 8);
[473] Fix | Delete
for (; $i >= 0; --$i) {
[474] Fix | Delete
self::store64($out, $i << 3, $ctx[0][$i]);
[475] Fix | Delete
}
[476] Fix | Delete
return $out;
[477] Fix | Delete
}
[478] Fix | Delete
[479] Fix | Delete
/**
[480] Fix | Delete
* @internal You should not use this directly from another application
[481] Fix | Delete
*
[482] Fix | Delete
* @param SplFixedArray|null $key
[483] Fix | Delete
* @param int $outlen
[484] Fix | Delete
* @param SplFixedArray|null $salt
[485] Fix | Delete
* @param SplFixedArray|null $personal
[486] Fix | Delete
* @return SplFixedArray
[487] Fix | Delete
* @throws SodiumException
[488] Fix | Delete
* @throws TypeError
[489] Fix | Delete
* @psalm-suppress MixedArgument
[490] Fix | Delete
* @psalm-suppress MixedAssignment
[491] Fix | Delete
* @psalm-suppress MixedArrayAccess
[492] Fix | Delete
* @psalm-suppress MixedArrayAssignment
[493] Fix | Delete
* @psalm-suppress MixedMethodCall
[494] Fix | Delete
*/
[495] Fix | Delete
public static function init(
[496] Fix | Delete
$key = null,
[497] Fix | Delete
$outlen = 64,
[498] Fix | Delete
$salt = null,
[499] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function