WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Самая быстрая Тема-конструктор для WordPress
функция не описана

ParagonIE_Sodium_Core_Poly1305_State::blocks() public WP 1.0

Это метод класса: ParagonIE_Sodium_Core_Poly1305_State{}

Хуков нет.

Возвращает

self.

Использование

$ParagonIE_Sodium_Core_Poly1305_State = new ParagonIE_Sodium_Core_Poly1305_State();
$ParagonIE_Sodium_Core_Poly1305_State->blocks( $message, $bytes );
$message(строка) (обязательный)
$bytes(число) (обязательный)

Код ParagonIE_Sodium_Core_Poly1305_State::blocks() WP 5.5.1

<?php
public function blocks($message, $bytes)
{
    if (self::strlen($message) < 16) {
        $message = str_pad($message, 16, "\x00", STR_PAD_RIGHT);
    }
    /** @var int $hibit */
    $hibit = $this->final ? 0 : 1 << 24; /* 1 << 128 */
    $r0 = (int) $this->r[0];
    $r1 = (int) $this->r[1];
    $r2 = (int) $this->r[2];
    $r3 = (int) $this->r[3];
    $r4 = (int) $this->r[4];

    $s1 = self::mul($r1, 5, 3);
    $s2 = self::mul($r2, 5, 3);
    $s3 = self::mul($r3, 5, 3);
    $s4 = self::mul($r4, 5, 3);

    $h0 = $this->h[0];
    $h1 = $this->h[1];
    $h2 = $this->h[2];
    $h3 = $this->h[3];
    $h4 = $this->h[4];

    while ($bytes >= ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE) {
        /* h += m[i] */
        $h0 +=  self::load_4(self::substr($message, 0, 4))       & 0x3ffffff;
        $h1 += (self::load_4(self::substr($message, 3, 4)) >> 2) & 0x3ffffff;
        $h2 += (self::load_4(self::substr($message, 6, 4)) >> 4) & 0x3ffffff;
        $h3 += (self::load_4(self::substr($message, 9, 4)) >> 6) & 0x3ffffff;
        $h4 += (self::load_4(self::substr($message, 12, 4)) >> 8) | $hibit;

        /* h *= r */
        $d0 = (
            self::mul($h0, $r0, 25) +
            self::mul($s4, $h1, 26) +
            self::mul($s3, $h2, 26) +
            self::mul($s2, $h3, 26) +
            self::mul($s1, $h4, 26)
        );

        $d1 = (
            self::mul($h0, $r1, 25) +
            self::mul($h1, $r0, 25) +
            self::mul($s4, $h2, 26) +
            self::mul($s3, $h3, 26) +
            self::mul($s2, $h4, 26)
        );

        $d2 = (
            self::mul($h0, $r2, 25) +
            self::mul($h1, $r1, 25) +
            self::mul($h2, $r0, 25) +
            self::mul($s4, $h3, 26) +
            self::mul($s3, $h4, 26)
        );

        $d3 = (
            self::mul($h0, $r3, 25) +
            self::mul($h1, $r2, 25) +
            self::mul($h2, $r1, 25) +
            self::mul($h3, $r0, 25) +
            self::mul($s4, $h4, 26)
        );

        $d4 = (
            self::mul($h0, $r4, 25) +
            self::mul($h1, $r3, 25) +
            self::mul($h2, $r2, 25) +
            self::mul($h3, $r1, 25) +
            self::mul($h4, $r0, 25)
        );

        /* (partial) h %= p */
        /** @var int $c */
        $c = $d0 >> 26;
        /** @var int $h0 */
        $h0 = $d0 & 0x3ffffff;
        $d1 += $c;

        /** @var int $c */
        $c = $d1 >> 26;
        /** @var int $h1 */
        $h1 = $d1 & 0x3ffffff;
        $d2 += $c;

        /** @var int $c */
        $c = $d2 >> 26;
        /** @var int $h2  */
        $h2 = $d2 & 0x3ffffff;
        $d3 += $c;

        /** @var int $c */
        $c = $d3 >> 26;
        /** @var int $h3 */
        $h3 = $d3 & 0x3ffffff;
        $d4 += $c;

        /** @var int $c */
        $c = $d4 >> 26;
        /** @var int $h4 */
        $h4 = $d4 & 0x3ffffff;
        $h0 += (int) self::mul($c, 5, 3);

        /** @var int $c */
        $c = $h0 >> 26;
        /** @var int $h0 */
        $h0 &= 0x3ffffff;
        $h1 += $c;

        // Chop off the left 32 bytes.
        $message = self::substr(
            $message,
            ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE
        );
        $bytes -= ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE;
    }

    $this->h = array(
        (int) ($h0 & 0xffffffff),
        (int) ($h1 & 0xffffffff),
        (int) ($h2 & 0xffffffff),
        (int) ($h3 & 0xffffffff),
        (int) ($h4 & 0xffffffff)
    );
    return $this;
}