public static function ParagonIE_Sodium_Core32_Curve25519::fe_frombytes in Automatic Updates 8
Same name and namespace in other branches
- 7 vendor/paragonie/sodium_compat/src/Core32/Curve25519.php \ParagonIE_Sodium_Core32_Curve25519::fe_frombytes()
Give: 32-byte string. Receive: A field element object to use for internal calculations.
@internal You should not use this directly from another application
@psalm-suppress MixedMethodCall
Parameters
string $s:
Return value
ParagonIE_Sodium_Core32_Curve25519_Fe
Throws
RangeException
SodiumException
TypeError
2 calls to ParagonIE_Sodium_Core32_Curve25519::fe_frombytes()
- ParagonIE_Sodium_Core32_Curve25519::ge_frombytes_negate_vartime in vendor/
paragonie/ sodium_compat/ src/ Core32/ Curve25519.php - @internal You should not use this directly from another application
- ParagonIE_Sodium_Core32_X25519::crypto_scalarmult_curve25519_ref10 in vendor/
paragonie/ sodium_compat/ src/ Core32/ X25519.php - @internal You should not use this directly from another application
File
- vendor/
paragonie/ sodium_compat/ src/ Core32/ Curve25519.php, line 160
Class
- ParagonIE_Sodium_Core32_Curve25519
- Class ParagonIE_Sodium_Core32_Curve25519
Code
public static function fe_frombytes($s) {
if (self::strlen($s) !== 32) {
throw new RangeException('Expected a 32-byte string.');
}
/** @var ParagonIE_Sodium_Core32_Int32 $h0 */
$h0 = ParagonIE_Sodium_Core32_Int32::fromInt(self::load_4($s));
/** @var ParagonIE_Sodium_Core32_Int32 $h1 */
$h1 = ParagonIE_Sodium_Core32_Int32::fromInt(self::load_3(self::substr($s, 4, 3)) << 6);
/** @var ParagonIE_Sodium_Core32_Int32 $h2 */
$h2 = ParagonIE_Sodium_Core32_Int32::fromInt(self::load_3(self::substr($s, 7, 3)) << 5);
/** @var ParagonIE_Sodium_Core32_Int32 $h3 */
$h3 = ParagonIE_Sodium_Core32_Int32::fromInt(self::load_3(self::substr($s, 10, 3)) << 3);
/** @var ParagonIE_Sodium_Core32_Int32 $h4 */
$h4 = ParagonIE_Sodium_Core32_Int32::fromInt(self::load_3(self::substr($s, 13, 3)) << 2);
/** @var ParagonIE_Sodium_Core32_Int32 $h5 */
$h5 = ParagonIE_Sodium_Core32_Int32::fromInt(self::load_4(self::substr($s, 16, 4)));
/** @var ParagonIE_Sodium_Core32_Int32 $h6 */
$h6 = ParagonIE_Sodium_Core32_Int32::fromInt(self::load_3(self::substr($s, 20, 3)) << 7);
/** @var ParagonIE_Sodium_Core32_Int32 $h7 */
$h7 = ParagonIE_Sodium_Core32_Int32::fromInt(self::load_3(self::substr($s, 23, 3)) << 5);
/** @var ParagonIE_Sodium_Core32_Int32 $h8 */
$h8 = ParagonIE_Sodium_Core32_Int32::fromInt(self::load_3(self::substr($s, 26, 3)) << 4);
/** @var ParagonIE_Sodium_Core32_Int32 $h9 */
$h9 = ParagonIE_Sodium_Core32_Int32::fromInt((self::load_3(self::substr($s, 29, 3)) & 8388607) << 2);
$carry9 = $h9
->addInt(1 << 24)
->shiftRight(25);
$h0 = $h0
->addInt32($carry9
->mulInt(19, 5));
$h9 = $h9
->subInt32($carry9
->shiftLeft(25));
$carry1 = $h1
->addInt(1 << 24)
->shiftRight(25);
$h2 = $h2
->addInt32($carry1);
$h1 = $h1
->subInt32($carry1
->shiftLeft(25));
$carry3 = $h3
->addInt(1 << 24)
->shiftRight(25);
$h4 = $h4
->addInt32($carry3);
$h3 = $h3
->subInt32($carry3
->shiftLeft(25));
$carry5 = $h5
->addInt(1 << 24)
->shiftRight(25);
$h6 = $h6
->addInt32($carry5);
$h5 = $h5
->subInt32($carry5
->shiftLeft(25));
$carry7 = $h7
->addInt(1 << 24)
->shiftRight(25);
$h8 = $h8
->addInt32($carry7);
$h7 = $h7
->subInt32($carry7
->shiftLeft(25));
$carry0 = $h0
->addInt(1 << 25)
->shiftRight(26);
$h1 = $h1
->addInt32($carry0);
$h0 = $h0
->subInt32($carry0
->shiftLeft(26));
$carry2 = $h2
->addInt(1 << 25)
->shiftRight(26);
$h3 = $h3
->addInt32($carry2);
$h2 = $h2
->subInt32($carry2
->shiftLeft(26));
$carry4 = $h4
->addInt(1 << 25)
->shiftRight(26);
$h5 = $h5
->addInt32($carry4);
$h4 = $h4
->subInt32($carry4
->shiftLeft(26));
$carry6 = $h6
->addInt(1 << 25)
->shiftRight(26);
$h7 = $h7
->addInt32($carry6);
$h6 = $h6
->subInt32($carry6
->shiftLeft(26));
$carry8 = $h8
->addInt(1 << 25)
->shiftRight(26);
$h9 = $h9
->addInt32($carry8);
$h8 = $h8
->subInt32($carry8
->shiftLeft(26));
return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(array(
$h0,
$h1,
$h2,
$h3,
$h4,
$h5,
$h6,
$h7,
$h8,
$h9,
));
}