ParagonIE_Sodium_Core32_Ed25519::pk_to_curve25519() –

You appear to be a bot. Output may be restricted

Description

Usage

$string = ParagonIE_Sodium_Core32_Ed25519::pk_to_curve25519( $pk );

Parameters

$pk
( string ) required

Returns

string

Source

File name: wordpress/wp-includes/sodium_compat/src/Core32/Ed25519.php
Lines:

1 to 33 of 33
    public static function pk_to_curve25519($pk)
    {
        if (self::ParagonIE_Sodium_Core32_Ed25519::small_order($pk)) {
            throw new SodiumException('Public key is on a small order');
        }
        $A = self::ge_frombytes_negate_vartime($pk);
        $p1 = self::ge_mul_l($A);
        if (!self::fe_isnonzero($p1->X)) {
            throw new SodiumException('Unexpected zero result');
        }

        # fe_1(one_minus_y);
        # fe_sub(one_minus_y, one_minus_y, A.Y);
        # fe_invert(one_minus_y, one_minus_y);
        $one_minux_y = self::fe_invert(
            self::fe_sub(
                self::fe_1(),
                $A->Y
            )
        );


        # fe_1(x);
        # fe_add(x, x, A.Y);
        # fe_mul(x, x, one_minus_y);
        $x = self::fe_mul(
            self::fe_add(self::fe_1(), $A->Y),
            $one_minux_y
        );

        # fe_tobytes(curve25519_pk, x);
        return self::fe_tobytes($x);
    }
 

 View on GitHub View on Trac