public static function ParagonIE_Sodium_Core_Curve25519::ge_sub in Automatic Updates 7
Same name and namespace in other branches
- 8 vendor/paragonie/sodium_compat/src/Core/Curve25519.php \ParagonIE_Sodium_Core_Curve25519::ge_sub()
Subtract two group elements.
r = p - q
@internal You should not use this directly from another application
Parameters
ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p:
ParagonIE_Sodium_Core_Curve25519_Ge_Cached $q:
Return value
ParagonIE_Sodium_Core_Curve25519_Ge_P1p1
2 calls to ParagonIE_Sodium_Core_Curve25519::ge_sub()
- ParagonIE_Sodium_Core_Curve25519::ge_double_scalarmult_vartime in vendor/
paragonie/ sodium_compat/ src/ Core/ Curve25519.php - @internal You should not use this directly from another application
- ParagonIE_Sodium_Core_Curve25519::ge_mul_l in vendor/
paragonie/ sodium_compat/ src/ Core/ Curve25519.php - multiply by the order of the main subgroup l = 2^252+27742317777372353535851937790883648493
File
- vendor/
paragonie/ sodium_compat/ src/ Core/ Curve25519.php, line 1760
Class
- ParagonIE_Sodium_Core_Curve25519
- Class ParagonIE_Sodium_Core_Curve25519
Code
public static function ge_sub(ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p, ParagonIE_Sodium_Core_Curve25519_Ge_Cached $q) {
$r = new ParagonIE_Sodium_Core_Curve25519_Ge_P1p1();
$r->X = self::fe_add($p->Y, $p->X);
$r->Y = self::fe_sub($p->Y, $p->X);
$r->Z = self::fe_mul($r->X, $q->YminusX);
$r->Y = self::fe_mul($r->Y, $q->YplusX);
$r->T = self::fe_mul($q->T2d, $p->T);
$r->X = self::fe_mul($p->Z, $q->Z);
$t0 = self::fe_add($r->X, $r->X);
$r->X = self::fe_sub($r->Z, $r->Y);
$r->Y = self::fe_add($r->Z, $r->Y);
$r->Z = self::fe_sub($t0, $r->T);
$r->T = self::fe_add($t0, $r->T);
return $r;
}