PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 3.1.22.3
JetBackup – Backup, Restore & Migrate v3.1.22.3
3.1.22.4 3.1.22.3 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.8.1 1.4.9 1.5.0 1.5.1 1.5.1.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.10 1.6.11 1.6.12 1.6.13 1.6.15 1.6.5.1 1.6.8.8 1.6.9 1.6.9.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7.5 2.0.8.7 2.0.9.11 2.0.9.14 2.0.9.15 2.0.9.6 2.0.9.7 2.0.9.9 3.1.10.7 3.1.11.1 3.1.12.3 3.1.13.4 3.1.14.17 3.1.15.4 3.1.16.1 3.1.17.5 3.1.18.10 3.1.18.8 3.1.18.9 3.1.19.8 3.1.20.3 3.1.21.3 3.1.7.9 3.1.9.2 trunk 1.1.90 1.1.91 1.2.0 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2
backup / src / JetBackup / 3rdparty / phpseclib3 / Math / BigInteger / Engines / BCMath / Base.php
backup / src / JetBackup / 3rdparty / phpseclib3 / Math / BigInteger / Engines / BCMath Last commit date
Reductions 1 year ago .htaccess 1 year ago Base.php 1 year ago BuiltIn.php 1 year ago DefaultEngine.php 1 year ago OpenSSL.php 1 year ago index.html 1 year ago web.config 1 year ago
Base.php
90 lines
1 <?php
2
3 /**
4 * Modular Exponentiation Engine
5 *
6 * PHP version 5 and 7
7 *
8 * @author Jim Wigginton <terrafrost@php.net>
9 * @copyright 2017 Jim Wigginton
10 * @license http://www.opensource.org/licenses/mit-license.html MIT License
11 * @link http://pear.php.net/package/Math_BigInteger
12 */
13
14 declare(strict_types=1);
15
16 namespace phpseclib3\Math\BigInteger\Engines\BCMath;
17
18 use phpseclib3\Math\BigInteger\Engines\BCMath;
19
20 /**
21 * Sliding Window Exponentiation Engine
22 *
23 * @author Jim Wigginton <terrafrost@php.net>
24 */
25 abstract class Base extends BCMath
26 {
27 /**
28 * Cache constants
29 *
30 * $cache[self::VARIABLE] tells us whether or not the cached data is still valid.
31 */
32 public const VARIABLE = 0;
33 /**
34 * $cache[self::DATA] contains the cached data.
35 */
36 public const DATA = 1;
37
38 /**
39 * Test for engine validity
40 */
41 public static function isValidEngine(): bool
42 {
43 return static::class != __CLASS__;
44 }
45
46 /**
47 * Performs modular exponentiation.
48 */
49 protected static function powModHelper(BCMath $x, BCMath $e, BCMath $n, string $class): BCMath
50 {
51 if (empty($e->value)) {
52 $temp = new $class();
53 $temp->value = '1';
54 return $x->normalize($temp);
55 }
56
57 return $x->normalize(static::slidingWindow($x, $e, $n, $class));
58 }
59
60 /**
61 * Modular reduction preparation
62 *
63 * @see self::slidingWindow()
64 */
65 protected static function prepareReduce(string $x, string $n, string $class): string
66 {
67 return static::reduce($x, $n);
68 }
69
70 /**
71 * Modular multiply
72 *
73 * @see self::slidingWindow()
74 */
75 protected static function multiplyReduce(string $x, string $y, string $n, string $class): string
76 {
77 return static::reduce(bcmul($x, $y), $n);
78 }
79
80 /**
81 * Modular square
82 *
83 * @see self::slidingWindow()
84 */
85 protected static function squareReduce(string $x, string $n, string $class): string
86 {
87 return static::reduce(bcmul($x, $x), $n);
88 }
89 }
90