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

ParagonIE_Sodium_Core32_Poly1305_State::finish() public WP 1.0

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

Хуков нет.

Возвращает

Строку.

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

$ParagonIE_Sodium_Core32_Poly1305_State = new ParagonIE_Sodium_Core32_Poly1305_State();
$ParagonIE_Sodium_Core32_Poly1305_State->finish();

Код ParagonIE_Sodium_Core32_Poly1305_State::finish() WP 5.5.1

<?php
public function finish()
{
    /* process the remaining block */
    if ($this->leftover) {
        $i = $this->leftover;
        $this->buffer[$i++] = 1;
        for (; $i < ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE; ++$i) {
            $this->buffer[$i] = 0;
        }
        $this->final = true;
        $this->blocks(
            self::substr(
                self::intArrayToString($this->buffer),
                0,
                ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE
            ),
            $b = ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE
        );
    }

    /**
     * @var ParagonIE_Sodium_Core32_Int32 $f
     * @var ParagonIE_Sodium_Core32_Int32 $g0
     * @var ParagonIE_Sodium_Core32_Int32 $g1
     * @var ParagonIE_Sodium_Core32_Int32 $g2
     * @var ParagonIE_Sodium_Core32_Int32 $g3
     * @var ParagonIE_Sodium_Core32_Int32 $g4
     * @var ParagonIE_Sodium_Core32_Int32 $h0
     * @var ParagonIE_Sodium_Core32_Int32 $h1
     * @var ParagonIE_Sodium_Core32_Int32 $h2
     * @var ParagonIE_Sodium_Core32_Int32 $h3
     * @var ParagonIE_Sodium_Core32_Int32 $h4
     */
    $h0 = $this->h[0];
    $h1 = $this->h[1];
    $h2 = $this->h[2];
    $h3 = $this->h[3];
    $h4 = $this->h[4];

    $c = $h1->shiftRight(26);           # $c = $h1 >> 26;
    $h1 = $h1->mask(0x3ffffff);         # $h1 &= 0x3ffffff;

    $h2 = $h2->addInt32($c);            # $h2 += $c;
    $c = $h2->shiftRight(26);           # $c = $h2 >> 26;
    $h2 = $h2->mask(0x3ffffff);         # $h2 &= 0x3ffffff;

    $h3 = $h3->addInt32($c);            # $h3 += $c;
    $c = $h3->shiftRight(26);           # $c = $h3 >> 26;
    $h3 = $h3->mask(0x3ffffff);         # $h3 &= 0x3ffffff;

    $h4 = $h4->addInt32($c);            # $h4 += $c;
    $c = $h4->shiftRight(26);           # $c = $h4 >> 26;
    $h4 = $h4->mask(0x3ffffff);         # $h4 &= 0x3ffffff;

    $h0 = $h0->addInt32($c->mulInt(5, 3)); # $h0 += self::mul($c, 5);
    $c = $h0->shiftRight(26);           # $c = $h0 >> 26;
    $h0 = $h0->mask(0x3ffffff);         # $h0 &= 0x3ffffff;
    $h1 = $h1->addInt32($c);            # $h1 += $c;

    /* compute h + -p */
    $g0 = $h0->addInt(5);
    $c  = $g0->shiftRight(26);
    $g0 = $g0->mask(0x3ffffff);
    $g1 = $h1->addInt32($c);
    $c  = $g1->shiftRight(26);
    $g1 = $g1->mask(0x3ffffff);
    $g2 = $h2->addInt32($c);
    $c  = $g2->shiftRight(26);
    $g2 = $g2->mask(0x3ffffff);
    $g3 = $h3->addInt32($c);
    $c  = $g3->shiftRight(26);
    $g3 = $g3->mask(0x3ffffff);
    $g4 = $h4->addInt32($c)->subInt(1 << 26);

    # $mask = ($g4 >> 31) - 1;
    /* select h if h < p, or h + -p if h >= p */
    $mask = (int) (($g4->toInt() >> 31) + 1);

    $g0 = $g0->mask($mask);
    $g1 = $g1->mask($mask);
    $g2 = $g2->mask($mask);
    $g3 = $g3->mask($mask);
    $g4 = $g4->mask($mask);

    /** @var int $mask */
    $mask = (~$mask) & 0xffffffff;

    $h0 = $h0->mask($mask)->orInt32($g0);
    $h1 = $h1->mask($mask)->orInt32($g1);
    $h2 = $h2->mask($mask)->orInt32($g2);
    $h3 = $h3->mask($mask)->orInt32($g3);
    $h4 = $h4->mask($mask)->orInt32($g4);

    /* h = h % (2^128) */
    $h0 = $h0->orInt32($h1->shiftLeft(26));
    $h1 = $h1->shiftRight(6)->orInt32($h2->shiftLeft(20));
    $h2 = $h2->shiftRight(12)->orInt32($h3->shiftLeft(14));
    $h3 = $h3->shiftRight(18)->orInt32($h4->shiftLeft(8));

    /* mac = (h + pad) % (2^128) */
    $f = $h0->toInt64()->addInt64($this->pad[0]);
    $h0 = $f->toInt32();
    $f = $h1->toInt64()->addInt64($this->pad[1])->addInt($h0->overflow);
    $h1 = $f->toInt32();
    $f = $h2->toInt64()->addInt64($this->pad[2])->addInt($h1->overflow);
    $h2 = $f->toInt32();
    $f = $h3->toInt64()->addInt64($this->pad[3])->addInt($h2->overflow);
    $h3 = $f->toInt32();

    return $h0->toReverseString() .
        $h1->toReverseString() .
        $h2->toReverseString() .
        $h3->toReverseString();
}