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

ParagonIE_Sodium_Core_Ristretto255::ristretto255_frombytes() public WP 1.0

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

Хуков нет.

Возвращает

Массив{h:. ParagonIE_Sodium_Core_Curve25519_Ge_P3, res: int}

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

$result = ParagonIE_Sodium_Core_Ristretto255::ristretto255_frombytes( $s, $skipCanonicalCheck );
$s(строка) (обязательный)
-
$skipCanonicalCheck *(true false)*

Код ParagonIE_Sodium_Core_Ristretto255::ristretto255_frombytes() WP 5.8

<?php
public static function ristretto255_frombytes($s, $skipCanonicalCheck = false)
{
    if (!$skipCanonicalCheck) {
        if (!self::ristretto255_point_is_canonical($s)) {
            throw new SodiumException('S is not canonical');
        }
    }

    $s_ = self::fe_frombytes($s);
    $ss = self::fe_sq($s_); /* ss = s^2 */

    $u1 = self::fe_sub(self::fe_1(), $ss); /* u1 = 1-ss */
    $u1u1 = self::fe_sq($u1); /* u1u1 = u1^2 */

    $u2 = self::fe_add(self::fe_1(), $ss); /* u2 = 1+ss */
    $u2u2 = self::fe_sq($u2); /* u2u2 = u2^2 */

    $v = self::fe_mul(
        ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$d),
        $u1u1
    ); /* v = d*u1^2 */
    $v = self::fe_neg($v); /* v = -d*u1^2 */
    $v = self::fe_sub($v, $u2u2); /* v = -(d*u1^2)-u2^2 */
    $v_u2u2 = self::fe_mul($v, $u2u2); /* v_u2u2 = v*u2^2 */

    // fe25519_1(one);
    // notsquare = ristretto255_sqrt_ratio_m1(inv_sqrt, one, v_u2u2);
    $one = self::fe_1();
    $result = self::ristretto255_sqrt_ratio_m1($one, $v_u2u2);
    $inv_sqrt = $result['x'];
    $notsquare = $result['nonsquare'];

    $h = new ParagonIE_Sodium_Core_Curve25519_Ge_P3();

    $h->X = self::fe_mul($inv_sqrt, $u2);
    $h->Y = self::fe_mul(self::fe_mul($inv_sqrt, $h->X), $v);

    $h->X = self::fe_mul($h->X, $s_);
    $h->X = self::fe_abs(
        self::fe_add($h->X, $h->X)
    );
    $h->Y = self::fe_mul($u1, $h->Y);
    $h->Z = self::fe_1();
    $h->T = self::fe_mul($h->X, $h->Y);

    $res = - ((1 - $notsquare) | self::fe_isnegative($h->T) | self::fe_iszero($h->Y));
    return array('h' => $h, 'res' => $res);
}