You are here

public static function ParagonIE_Sodium_Core_X25519::fe_cswap in Automatic Updates 8

Same name and namespace in other branches
  1. 7 vendor/paragonie/sodium_compat/src/Core/X25519.php \ParagonIE_Sodium_Core_X25519::fe_cswap()

Alters the objects passed to this method in place.

@internal You should not use this directly from another application

@psalm-suppress MixedAssignment

Parameters

ParagonIE_Sodium_Core_Curve25519_Fe $f:

ParagonIE_Sodium_Core_Curve25519_Fe $g:

int $b:

Return value

void

1 call to ParagonIE_Sodium_Core_X25519::fe_cswap()
ParagonIE_Sodium_Core_X25519::crypto_scalarmult_curve25519_ref10 in vendor/paragonie/sodium_compat/src/Core/X25519.php
@internal You should not use this directly from another application

File

vendor/paragonie/sodium_compat/src/Core/X25519.php, line 23

Class

ParagonIE_Sodium_Core_X25519
Class ParagonIE_Sodium_Core_X25519

Code

public static function fe_cswap(ParagonIE_Sodium_Core_Curve25519_Fe $f, ParagonIE_Sodium_Core_Curve25519_Fe $g, $b = 0) {
  $f0 = (int) $f[0];
  $f1 = (int) $f[1];
  $f2 = (int) $f[2];
  $f3 = (int) $f[3];
  $f4 = (int) $f[4];
  $f5 = (int) $f[5];
  $f6 = (int) $f[6];
  $f7 = (int) $f[7];
  $f8 = (int) $f[8];
  $f9 = (int) $f[9];
  $g0 = (int) $g[0];
  $g1 = (int) $g[1];
  $g2 = (int) $g[2];
  $g3 = (int) $g[3];
  $g4 = (int) $g[4];
  $g5 = (int) $g[5];
  $g6 = (int) $g[6];
  $g7 = (int) $g[7];
  $g8 = (int) $g[8];
  $g9 = (int) $g[9];
  $b = -$b;
  $x0 = ($f0 ^ $g0) & $b;
  $x1 = ($f1 ^ $g1) & $b;
  $x2 = ($f2 ^ $g2) & $b;
  $x3 = ($f3 ^ $g3) & $b;
  $x4 = ($f4 ^ $g4) & $b;
  $x5 = ($f5 ^ $g5) & $b;
  $x6 = ($f6 ^ $g6) & $b;
  $x7 = ($f7 ^ $g7) & $b;
  $x8 = ($f8 ^ $g8) & $b;
  $x9 = ($f9 ^ $g9) & $b;
  $f[0] = $f0 ^ $x0;
  $f[1] = $f1 ^ $x1;
  $f[2] = $f2 ^ $x2;
  $f[3] = $f3 ^ $x3;
  $f[4] = $f4 ^ $x4;
  $f[5] = $f5 ^ $x5;
  $f[6] = $f6 ^ $x6;
  $f[7] = $f7 ^ $x7;
  $f[8] = $f8 ^ $x8;
  $f[9] = $f9 ^ $x9;
  $g[0] = $g0 ^ $x0;
  $g[1] = $g1 ^ $x1;
  $g[2] = $g2 ^ $x2;
  $g[3] = $g3 ^ $x3;
  $g[4] = $g4 ^ $x4;
  $g[5] = $g5 ^ $x5;
  $g[6] = $g6 ^ $x6;
  $g[7] = $g7 ^ $x7;
  $g[8] = $g8 ^ $x8;
  $g[9] = $g9 ^ $x9;
}