Completed
Push — develop ( a51f26...2ecf95 )
by Zack
15:32
created
vendor/paragonie/sodium_compat/src/Core/ChaCha20/IetfCtx.php 3 patches
Indentation   +26 added lines, -26 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core_ChaCha20_IetfCtx', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -9,30 +9,30 @@  discard block
 block discarded – undo
9 9
  */
10 10
 class ParagonIE_Sodium_Core_ChaCha20_IetfCtx extends ParagonIE_Sodium_Core_ChaCha20_Ctx
11 11
 {
12
-    /**
13
-     * ParagonIE_Sodium_Core_ChaCha20_IetfCtx constructor.
14
-     *
15
-     * @internal You should not use this directly from another application
16
-     *
17
-     * @param string $key     ChaCha20 key.
18
-     * @param string $iv      Initialization Vector (a.k.a. nonce).
19
-     * @param string $counter The initial counter value.
20
-     *                        Defaults to 4 0x00 bytes.
21
-     * @throws InvalidArgumentException
22
-     * @throws TypeError
23
-     */
24
-    public function __construct($key = '', $iv = '', $counter = '')
25
-    {
26
-        if (self::strlen($iv) !== 12) {
27
-            throw new InvalidArgumentException('ChaCha20 expects a 96-bit nonce in IETF mode.');
28
-        }
29
-        parent::__construct($key, self::substr($iv, 0, 8), $counter);
12
+	/**
13
+	 * ParagonIE_Sodium_Core_ChaCha20_IetfCtx constructor.
14
+	 *
15
+	 * @internal You should not use this directly from another application
16
+	 *
17
+	 * @param string $key     ChaCha20 key.
18
+	 * @param string $iv      Initialization Vector (a.k.a. nonce).
19
+	 * @param string $counter The initial counter value.
20
+	 *                        Defaults to 4 0x00 bytes.
21
+	 * @throws InvalidArgumentException
22
+	 * @throws TypeError
23
+	 */
24
+	public function __construct($key = '', $iv = '', $counter = '')
25
+	{
26
+		if (self::strlen($iv) !== 12) {
27
+			throw new InvalidArgumentException('ChaCha20 expects a 96-bit nonce in IETF mode.');
28
+		}
29
+		parent::__construct($key, self::substr($iv, 0, 8), $counter);
30 30
 
31
-        if (!empty($counter)) {
32
-            $this->container[12] = self::load_4(self::substr($counter, 0, 4));
33
-        }
34
-        $this->container[13] = self::load_4(self::substr($iv, 0, 4));
35
-        $this->container[14] = self::load_4(self::substr($iv, 4, 4));
36
-        $this->container[15] = self::load_4(self::substr($iv, 8, 4));
37
-    }
31
+		if (!empty($counter)) {
32
+			$this->container[12] = self::load_4(self::substr($counter, 0, 4));
33
+		}
34
+		$this->container[13] = self::load_4(self::substr($iv, 0, 4));
35
+		$this->container[14] = self::load_4(self::substr($iv, 4, 4));
36
+		$this->container[15] = self::load_4(self::substr($iv, 8, 4));
37
+	}
38 38
 }
Please login to merge, or discard this patch.
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core_ChaCha20_IetfCtx', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core_ChaCha20_IetfCtx', false ) ) {
4 4
     return;
5 5
 }
6 6
 
@@ -21,18 +21,18 @@  discard block
 block discarded – undo
21 21
      * @throws InvalidArgumentException
22 22
      * @throws TypeError
23 23
      */
24
-    public function __construct($key = '', $iv = '', $counter = '')
24
+    public function __construct( $key = '', $iv = '', $counter = '' )
25 25
     {
26
-        if (self::strlen($iv) !== 12) {
27
-            throw new InvalidArgumentException('ChaCha20 expects a 96-bit nonce in IETF mode.');
26
+        if ( self::strlen( $iv ) !== 12 ) {
27
+            throw new InvalidArgumentException( 'ChaCha20 expects a 96-bit nonce in IETF mode.' );
28 28
         }
29
-        parent::__construct($key, self::substr($iv, 0, 8), $counter);
29
+        parent::__construct( $key, self::substr( $iv, 0, 8 ), $counter );
30 30
 
31
-        if (!empty($counter)) {
32
-            $this->container[12] = self::load_4(self::substr($counter, 0, 4));
31
+        if ( ! empty( $counter ) ) {
32
+            $this->container[ 12 ] = self::load_4( self::substr( $counter, 0, 4 ) );
33 33
         }
34
-        $this->container[13] = self::load_4(self::substr($iv, 0, 4));
35
-        $this->container[14] = self::load_4(self::substr($iv, 4, 4));
36
-        $this->container[15] = self::load_4(self::substr($iv, 8, 4));
34
+        $this->container[ 13 ] = self::load_4( self::substr( $iv, 0, 4 ) );
35
+        $this->container[ 14 ] = self::load_4( self::substr( $iv, 4, 4 ) );
36
+        $this->container[ 15 ] = self::load_4( self::substr( $iv, 8, 4 ) );
37 37
     }
38 38
 }
Please login to merge, or discard this patch.
Braces   +2 added lines, -4 removed lines patch added patch discarded remove patch
@@ -7,8 +7,7 @@  discard block
 block discarded – undo
7 7
 /**
8 8
  * Class ParagonIE_Sodium_Core_ChaCha20_IetfCtx
9 9
  */
10
-class ParagonIE_Sodium_Core_ChaCha20_IetfCtx extends ParagonIE_Sodium_Core_ChaCha20_Ctx
11
-{
10
+class ParagonIE_Sodium_Core_ChaCha20_IetfCtx extends ParagonIE_Sodium_Core_ChaCha20_Ctx {
12 11
     /**
13 12
      * ParagonIE_Sodium_Core_ChaCha20_IetfCtx constructor.
14 13
      *
@@ -21,8 +20,7 @@  discard block
 block discarded – undo
21 20
      * @throws InvalidArgumentException
22 21
      * @throws TypeError
23 22
      */
24
-    public function __construct($key = '', $iv = '', $counter = '')
25
-    {
23
+    public function __construct($key = '', $iv = '', $counter = '') {
26 24
         if (self::strlen($iv) !== 12) {
27 25
             throw new InvalidArgumentException('ChaCha20 expects a 96-bit nonce in IETF mode.');
28 26
         }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/SodiumException.php 3 patches
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -1,11 +1,11 @@
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (!class_exists('SodiumException', false)) {
4
-    /**
5
-     * Class SodiumException
6
-     */
7
-    class SodiumException extends Exception
8
-    {
4
+	/**
5
+	 * Class SodiumException
6
+	 */
7
+	class SodiumException extends Exception
8
+	{
9 9
 
10
-    }
10
+	}
11 11
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (!class_exists('SodiumException', false)) {
3
+if ( ! class_exists( 'SodiumException', false ) ) {
4 4
     /**
5 5
      * Class SodiumException
6 6
      */
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -4,8 +4,7 @@
 block discarded – undo
4 4
     /**
5 5
      * Class SodiumException
6 6
      */
7
-    class SodiumException extends Exception
8
-    {
7
+    class SodiumException extends Exception {
9 8
 
10 9
     }
11 10
 }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/BLAKE2b.php 3 patches
Indentation   +701 added lines, -701 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core_BLAKE2b', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -11,709 +11,709 @@  discard block
 block discarded – undo
11 11
  */
12 12
 abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Util
13 13
 {
14
-    /**
15
-     * @var SplFixedArray
16
-     */
17
-    public static $iv;
18
-
19
-    /**
20
-     * @var array<int, array<int, int>>
21
-     */
22
-    public static $sigma = array(
23
-        array(  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15),
24
-        array( 14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3),
25
-        array( 11,  8, 12,  0,  5,  2, 15, 13, 10, 14,  3,  6,  7,  1,  9,  4),
26
-        array(  7,  9,  3,  1, 13, 12, 11, 14,  2,  6,  5, 10,  4,  0, 15,  8),
27
-        array(  9,  0,  5,  7,  2,  4, 10, 15, 14,  1, 11, 12,  6,  8,  3, 13),
28
-        array(  2, 12,  6, 10,  0, 11,  8,  3,  4, 13,  7,  5, 15, 14,  1,  9),
29
-        array( 12,  5,  1, 15, 14, 13,  4, 10,  0,  7,  6,  3,  9,  2,  8, 11),
30
-        array( 13, 11,  7, 14, 12,  1,  3,  9,  5,  0, 15,  4,  8,  6,  2, 10),
31
-        array(  6, 15, 14,  9, 11,  3,  0,  8, 12,  2, 13,  7,  1,  4, 10,  5),
32
-        array( 10,  2,  8,  4,  7,  6,  1,  5, 15, 11,  9, 14,  3, 12, 13 , 0),
33
-        array(  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15),
34
-        array( 14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3)
35
-    );
36
-
37
-    const BLOCKBYTES = 128;
38
-    const OUTBYTES   = 64;
39
-    const KEYBYTES   = 64;
40
-
41
-    /**
42
-     * Turn two 32-bit integers into a fixed array representing a 64-bit integer.
43
-     *
44
-     * @internal You should not use this directly from another application
45
-     *
46
-     * @param int $high
47
-     * @param int $low
48
-     * @return ParagonIE_Sodium_Core32_Int64
49
-     * @throws SodiumException
50
-     * @throws TypeError
51
-     */
52
-    public static function new64($high, $low)
53
-    {
54
-        return ParagonIE_Sodium_Core32_Int64::fromInts($low, $high);
55
-    }
56
-
57
-    /**
58
-     * Convert an arbitrary number into an SplFixedArray of two 32-bit integers
59
-     * that represents a 64-bit integer.
60
-     *
61
-     * @internal You should not use this directly from another application
62
-     *
63
-     * @param int $num
64
-     * @return ParagonIE_Sodium_Core32_Int64
65
-     * @throws SodiumException
66
-     * @throws TypeError
67
-     */
68
-    protected static function to64($num)
69
-    {
70
-        list($hi, $lo) = self::numericTo64BitInteger($num);
71
-        return self::new64($hi, $lo);
72
-    }
73
-
74
-    /**
75
-     * Adds two 64-bit integers together, returning their sum as a SplFixedArray
76
-     * containing two 32-bit integers (representing a 64-bit integer).
77
-     *
78
-     * @internal You should not use this directly from another application
79
-     *
80
-     * @param ParagonIE_Sodium_Core32_Int64 $x
81
-     * @param ParagonIE_Sodium_Core32_Int64 $y
82
-     * @return ParagonIE_Sodium_Core32_Int64
83
-     */
84
-    protected static function add64($x, $y)
85
-    {
86
-        return $x->addInt64($y);
87
-    }
88
-
89
-    /**
90
-     * @internal You should not use this directly from another application
91
-     *
92
-     * @param ParagonIE_Sodium_Core32_Int64 $x
93
-     * @param ParagonIE_Sodium_Core32_Int64 $y
94
-     * @param ParagonIE_Sodium_Core32_Int64 $z
95
-     * @return ParagonIE_Sodium_Core32_Int64
96
-     */
97
-    public static function add364($x, $y, $z)
98
-    {
99
-        return $x->addInt64($y)->addInt64($z);
100
-    }
101
-
102
-    /**
103
-     * @internal You should not use this directly from another application
104
-     *
105
-     * @param ParagonIE_Sodium_Core32_Int64 $x
106
-     * @param ParagonIE_Sodium_Core32_Int64 $y
107
-     * @return ParagonIE_Sodium_Core32_Int64
108
-     * @throws TypeError
109
-     */
110
-    public static function xor64(ParagonIE_Sodium_Core32_Int64 $x, ParagonIE_Sodium_Core32_Int64 $y)
111
-    {
112
-        return $x->xorInt64($y);
113
-    }
114
-
115
-    /**
116
-     * @internal You should not use this directly from another application
117
-     *
118
-     * @param ParagonIE_Sodium_Core32_Int64 $x
119
-     * @param int $c
120
-     * @return ParagonIE_Sodium_Core32_Int64
121
-     * @throws SodiumException
122
-     * @throws TypeError
123
-     */
124
-    public static function rotr64(ParagonIE_Sodium_Core32_Int64 $x, $c)
125
-    {
126
-        return $x->rotateRight($c);
127
-    }
128
-
129
-    /**
130
-     * @internal You should not use this directly from another application
131
-     *
132
-     * @param SplFixedArray $x
133
-     * @param int $i
134
-     * @return ParagonIE_Sodium_Core32_Int64
135
-     * @throws SodiumException
136
-     * @throws TypeError
137
-     */
138
-    public static function load64($x, $i)
139
-    {
140
-        /** @var int $l */
141
-        $l = (int) ($x[$i])
142
-             | ((int) ($x[$i+1]) << 8)
143
-             | ((int) ($x[$i+2]) << 16)
144
-             | ((int) ($x[$i+3]) << 24);
145
-        /** @var int $h */
146
-        $h = (int) ($x[$i+4])
147
-             | ((int) ($x[$i+5]) << 8)
148
-             | ((int) ($x[$i+6]) << 16)
149
-             | ((int) ($x[$i+7]) << 24);
150
-        return self::new64($h, $l);
151
-    }
152
-
153
-    /**
154
-     * @internal You should not use this directly from another application
155
-     *
156
-     * @param SplFixedArray $x
157
-     * @param int $i
158
-     * @param ParagonIE_Sodium_Core32_Int64 $u
159
-     * @return void
160
-     * @throws TypeError
161
-     * @psalm-suppress MixedArgument
162
-     * @psalm-suppress MixedAssignment
163
-     * @psalm-suppress MixedArrayAccess
164
-     * @psalm-suppress MixedArrayAssignment
165
-     * @psalm-suppress MixedArrayOffset
166
-     */
167
-    public static function store64(SplFixedArray $x, $i, ParagonIE_Sodium_Core32_Int64 $u)
168
-    {
169
-        $v = clone $u;
170
-        $maxLength = $x->getSize() - 1;
171
-        for ($j = 0; $j < 8; ++$j) {
172
-            $k = 3 - ($j >> 1);
173
-            $x[$i] = $v->limbs[$k] & 0xff;
174
-            if (++$i > $maxLength) {
175
-                return;
176
-            }
177
-            $v->limbs[$k] >>= 8;
178
-        }
179
-    }
180
-
181
-    /**
182
-     * This just sets the $iv static variable.
183
-     *
184
-     * @internal You should not use this directly from another application
185
-     *
186
-     * @return void
187
-     * @throws SodiumException
188
-     * @throws TypeError
189
-     */
190
-    public static function pseudoConstructor()
191
-    {
192
-        static $called = false;
193
-        if ($called) {
194
-            return;
195
-        }
196
-        self::$iv = new SplFixedArray(8);
197
-        self::$iv[0] = self::new64(0x6a09e667, 0xf3bcc908);
198
-        self::$iv[1] = self::new64(0xbb67ae85, 0x84caa73b);
199
-        self::$iv[2] = self::new64(0x3c6ef372, 0xfe94f82b);
200
-        self::$iv[3] = self::new64(0xa54ff53a, 0x5f1d36f1);
201
-        self::$iv[4] = self::new64(0x510e527f, 0xade682d1);
202
-        self::$iv[5] = self::new64(0x9b05688c, 0x2b3e6c1f);
203
-        self::$iv[6] = self::new64(0x1f83d9ab, 0xfb41bd6b);
204
-        self::$iv[7] = self::new64(0x5be0cd19, 0x137e2179);
205
-
206
-        $called = true;
207
-    }
208
-
209
-    /**
210
-     * Returns a fresh BLAKE2 context.
211
-     *
212
-     * @internal You should not use this directly from another application
213
-     *
214
-     * @return SplFixedArray
215
-     * @throws TypeError
216
-     * @psalm-suppress MixedArgument
217
-     * @psalm-suppress MixedAssignment
218
-     * @psalm-suppress MixedArrayAccess
219
-     * @psalm-suppress MixedArrayAssignment
220
-     * @psalm-suppress MixedArrayOffset
221
-     * @throws SodiumException
222
-     * @throws TypeError
223
-     */
224
-    protected static function context()
225
-    {
226
-        $ctx    = new SplFixedArray(6);
227
-        $ctx[0] = new SplFixedArray(8);   // h
228
-        $ctx[1] = new SplFixedArray(2);   // t
229
-        $ctx[2] = new SplFixedArray(2);   // f
230
-        $ctx[3] = new SplFixedArray(256); // buf
231
-        $ctx[4] = 0;                      // buflen
232
-        $ctx[5] = 0;                      // last_node (uint8_t)
233
-
234
-        for ($i = 8; $i--;) {
235
-            $ctx[0][$i] = self::$iv[$i];
236
-        }
237
-        for ($i = 256; $i--;) {
238
-            $ctx[3][$i] = 0;
239
-        }
240
-
241
-        $zero = self::new64(0, 0);
242
-        $ctx[1][0] = $zero;
243
-        $ctx[1][1] = $zero;
244
-        $ctx[2][0] = $zero;
245
-        $ctx[2][1] = $zero;
246
-
247
-        return $ctx;
248
-    }
249
-
250
-    /**
251
-     * @internal You should not use this directly from another application
252
-     *
253
-     * @param SplFixedArray $ctx
254
-     * @param SplFixedArray $buf
255
-     * @return void
256
-     * @throws SodiumException
257
-     * @throws TypeError
258
-     * @psalm-suppress MixedArgument
259
-     * @psalm-suppress MixedArrayAccess
260
-     * @psalm-suppress MixedArrayAssignment
261
-     * @psalm-suppress MixedAssignment
262
-     */
263
-    protected static function compress(SplFixedArray $ctx, SplFixedArray $buf)
264
-    {
265
-        $m = new SplFixedArray(16);
266
-        $v = new SplFixedArray(16);
267
-
268
-        for ($i = 16; $i--;) {
269
-            $m[$i] = self::load64($buf, $i << 3);
270
-        }
271
-
272
-        for ($i = 8; $i--;) {
273
-            $v[$i] = $ctx[0][$i];
274
-        }
275
-
276
-        $v[ 8] = self::$iv[0];
277
-        $v[ 9] = self::$iv[1];
278
-        $v[10] = self::$iv[2];
279
-        $v[11] = self::$iv[3];
280
-
281
-        $v[12] = self::xor64($ctx[1][0], self::$iv[4]);
282
-        $v[13] = self::xor64($ctx[1][1], self::$iv[5]);
283
-        $v[14] = self::xor64($ctx[2][0], self::$iv[6]);
284
-        $v[15] = self::xor64($ctx[2][1], self::$iv[7]);
285
-
286
-        for ($r = 0; $r < 12; ++$r) {
287
-            $v = self::G($r, 0, 0, 4, 8, 12, $v, $m);
288
-            $v = self::G($r, 1, 1, 5, 9, 13, $v, $m);
289
-            $v = self::G($r, 2, 2, 6, 10, 14, $v, $m);
290
-            $v = self::G($r, 3, 3, 7, 11, 15, $v, $m);
291
-            $v = self::G($r, 4, 0, 5, 10, 15, $v, $m);
292
-            $v = self::G($r, 5, 1, 6, 11, 12, $v, $m);
293
-            $v = self::G($r, 6, 2, 7, 8, 13, $v, $m);
294
-            $v = self::G($r, 7, 3, 4, 9, 14, $v, $m);
295
-        }
296
-
297
-        for ($i = 8; $i--;) {
298
-            $ctx[0][$i] = self::xor64(
299
-                $ctx[0][$i], self::xor64($v[$i], $v[$i+8])
300
-            );
301
-        }
302
-    }
303
-
304
-    /**
305
-     * @internal You should not use this directly from another application
306
-     *
307
-     * @param int $r
308
-     * @param int $i
309
-     * @param int $a
310
-     * @param int $b
311
-     * @param int $c
312
-     * @param int $d
313
-     * @param SplFixedArray $v
314
-     * @param SplFixedArray $m
315
-     * @return SplFixedArray
316
-     * @throws SodiumException
317
-     * @throws TypeError
318
-     * @psalm-suppress MixedArgument
319
-     * @psalm-suppress MixedArrayOffset
320
-     */
321
-    public static function G($r, $i, $a, $b, $c, $d, SplFixedArray $v, SplFixedArray $m)
322
-    {
323
-        $v[$a] = self::add364($v[$a], $v[$b], $m[self::$sigma[$r][$i << 1]]);
324
-        $v[$d] = self::rotr64(self::xor64($v[$d], $v[$a]), 32);
325
-        $v[$c] = self::add64($v[$c], $v[$d]);
326
-        $v[$b] = self::rotr64(self::xor64($v[$b], $v[$c]), 24);
327
-        $v[$a] = self::add364($v[$a], $v[$b], $m[self::$sigma[$r][($i << 1) + 1]]);
328
-        $v[$d] = self::rotr64(self::xor64($v[$d], $v[$a]), 16);
329
-        $v[$c] = self::add64($v[$c], $v[$d]);
330
-        $v[$b] = self::rotr64(self::xor64($v[$b], $v[$c]), 63);
331
-        return $v;
332
-    }
333
-
334
-    /**
335
-     * @internal You should not use this directly from another application
336
-     *
337
-     * @param SplFixedArray $ctx
338
-     * @param int $inc
339
-     * @return void
340
-     * @throws SodiumException
341
-     * @throws TypeError
342
-     * @psalm-suppress MixedArgument
343
-     * @psalm-suppress MixedArrayAccess
344
-     * @psalm-suppress MixedArrayAssignment
345
-     */
346
-    public static function increment_counter($ctx, $inc)
347
-    {
348
-        if ($inc < 0) {
349
-            throw new SodiumException('Increasing by a negative number makes no sense.');
350
-        }
351
-        $t = self::to64($inc);
352
-        # S->t is $ctx[1] in our implementation
353
-
354
-        # S->t[0] = ( uint64_t )( t >> 0 );
355
-        $ctx[1][0] = self::add64($ctx[1][0], $t);
356
-
357
-        # S->t[1] += ( S->t[0] < inc );
358
-        if (!($ctx[1][0] instanceof ParagonIE_Sodium_Core32_Int64)) {
359
-            throw new TypeError('Not an int64');
360
-        }
361
-        /** @var ParagonIE_Sodium_Core32_Int64 $c*/
362
-        $c = $ctx[1][0];
363
-        if ($c->isLessThanInt($inc)) {
364
-            $ctx[1][1] = self::add64($ctx[1][1], self::to64(1));
365
-        }
366
-    }
367
-
368
-    /**
369
-     * @internal You should not use this directly from another application
370
-     *
371
-     * @param SplFixedArray $ctx
372
-     * @param SplFixedArray $p
373
-     * @param int $plen
374
-     * @return void
375
-     * @throws SodiumException
376
-     * @throws TypeError
377
-     * @psalm-suppress MixedArgument
378
-     * @psalm-suppress MixedAssignment
379
-     * @psalm-suppress MixedArrayAccess
380
-     * @psalm-suppress MixedArrayAssignment
381
-     * @psalm-suppress MixedArrayOffset
382
-     * @psalm-suppress MixedMethodCall
383
-     * @psalm-suppress MixedOperand
384
-     */
385
-    public static function update(SplFixedArray $ctx, SplFixedArray $p, $plen)
386
-    {
387
-        self::pseudoConstructor();
388
-
389
-        $offset = 0;
390
-        while ($plen > 0) {
391
-            $left = $ctx[4];
392
-            $fill = 256 - $left;
393
-
394
-            if ($plen > $fill) {
395
-                # memcpy( S->buf + left, in, fill ); /* Fill buffer */
396
-                for ($i = $fill; $i--;) {
397
-                    $ctx[3][$i + $left] = $p[$i + $offset];
398
-                }
399
-
400
-                # S->buflen += fill;
401
-                $ctx[4] += $fill;
402
-
403
-                # blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES );
404
-                self::increment_counter($ctx, 128);
405
-
406
-                # blake2b_compress( S, S->buf ); /* Compress */
407
-                self::compress($ctx, $ctx[3]);
408
-
409
-                # memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); /* Shift buffer left */
410
-                for ($i = 128; $i--;) {
411
-                    $ctx[3][$i] = $ctx[3][$i + 128];
412
-                }
413
-
414
-                # S->buflen -= BLAKE2B_BLOCKBYTES;
415
-                $ctx[4] -= 128;
416
-
417
-                # in += fill;
418
-                $offset += $fill;
419
-
420
-                # inlen -= fill;
421
-                $plen -= $fill;
422
-            } else {
423
-                for ($i = $plen; $i--;) {
424
-                    $ctx[3][$i + $left] = $p[$i + $offset];
425
-                }
426
-                $ctx[4] += $plen;
427
-                $offset += $plen;
428
-                $plen -= $plen;
429
-            }
430
-        }
431
-    }
432
-
433
-    /**
434
-     * @internal You should not use this directly from another application
435
-     *
436
-     * @param SplFixedArray $ctx
437
-     * @param SplFixedArray $out
438
-     * @return SplFixedArray
439
-     * @throws SodiumException
440
-     * @throws TypeError
441
-     * @psalm-suppress MixedArgument
442
-     * @psalm-suppress MixedAssignment
443
-     * @psalm-suppress MixedArrayAccess
444
-     * @psalm-suppress MixedArrayAssignment
445
-     * @psalm-suppress MixedArrayOffset
446
-     * @psalm-suppress MixedMethodCall
447
-     * @psalm-suppress MixedOperand
448
-     */
449
-    public static function finish(SplFixedArray $ctx, SplFixedArray $out)
450
-    {
451
-        self::pseudoConstructor();
452
-        if ($ctx[4] > 128) {
453
-            self::increment_counter($ctx, 128);
454
-            self::compress($ctx, $ctx[3]);
455
-            $ctx[4] -= 128;
456
-            if ($ctx[4] > 128) {
457
-                throw new SodiumException('Failed to assert that buflen <= 128 bytes');
458
-            }
459
-            for ($i = $ctx[4]; $i--;) {
460
-                $ctx[3][$i] = $ctx[3][$i + 128];
461
-            }
462
-        }
463
-
464
-        self::increment_counter($ctx, $ctx[4]);
465
-        $ctx[2][0] = self::new64(0xffffffff, 0xffffffff);
466
-
467
-        for ($i = 256 - $ctx[4]; $i--;) {
468
-            /** @var int $i */
469
-            $ctx[3][$i + $ctx[4]] = 0;
470
-        }
471
-
472
-        self::compress($ctx, $ctx[3]);
473
-
474
-        $i = (int) (($out->getSize() - 1) / 8);
475
-        for (; $i >= 0; --$i) {
476
-            self::store64($out, $i << 3, $ctx[0][$i]);
477
-        }
478
-        return $out;
479
-    }
480
-
481
-    /**
482
-     * @internal You should not use this directly from another application
483
-     *
484
-     * @param SplFixedArray|null $key
485
-     * @param int $outlen
486
-     * @param SplFixedArray|null $salt
487
-     * @param SplFixedArray|null $personal
488
-     * @return SplFixedArray
489
-     * @throws SodiumException
490
-     * @throws TypeError
491
-     * @psalm-suppress MixedArgument
492
-     * @psalm-suppress MixedAssignment
493
-     * @psalm-suppress MixedArrayAccess
494
-     * @psalm-suppress MixedArrayAssignment
495
-     * @psalm-suppress MixedMethodCall
496
-     */
497
-    public static function init(
498
-        $key = null,
499
-        $outlen = 64,
500
-        $salt = null,
501
-        $personal = null
502
-    ) {
503
-        self::pseudoConstructor();
504
-        $klen = 0;
505
-
506
-        if ($key !== null) {
507
-            if (count($key) > 64) {
508
-                throw new SodiumException('Invalid key size');
509
-            }
510
-            $klen = count($key);
511
-        }
512
-
513
-        if ($outlen > 64) {
514
-            throw new SodiumException('Invalid output size');
515
-        }
516
-
517
-        $ctx = self::context();
518
-
519
-        $p = new SplFixedArray(64);
520
-        // Zero our param buffer...
521
-        for ($i = 64; --$i;) {
522
-            $p[$i] = 0;
523
-        }
524
-
525
-        $p[0] = $outlen; // digest_length
526
-        $p[1] = $klen;   // key_length
527
-        $p[2] = 1;       // fanout
528
-        $p[3] = 1;       // depth
529
-
530
-        if ($salt instanceof SplFixedArray) {
531
-            // salt: [32] through [47]
532
-            for ($i = 0; $i < 16; ++$i) {
533
-                $p[32 + $i] = (int) $salt[$i];
534
-            }
535
-        }
536
-        if ($personal instanceof SplFixedArray) {
537
-            // personal: [48] through [63]
538
-            for ($i = 0; $i < 16; ++$i) {
539
-                $p[48 + $i] = (int) $personal[$i];
540
-            }
541
-        }
542
-
543
-        $ctx[0][0] = self::xor64(
544
-            $ctx[0][0],
545
-            self::load64($p, 0)
546
-        );
547
-
548
-        if ($salt instanceof SplFixedArray || $personal instanceof SplFixedArray) {
549
-            // We need to do what blake2b_init_param() does:
550
-            for ($i = 1; $i < 8; ++$i) {
551
-                $ctx[0][$i] = self::xor64(
552
-                    $ctx[0][$i],
553
-                    self::load64($p, $i << 3)
554
-                );
555
-            }
556
-        }
557
-
558
-        if ($klen > 0 && $key instanceof SplFixedArray) {
559
-            $block = new SplFixedArray(128);
560
-            for ($i = 128; $i--;) {
561
-                $block[$i] = 0;
562
-            }
563
-            for ($i = $klen; $i--;) {
564
-                $block[$i] = $key[$i];
565
-            }
566
-            self::update($ctx, $block, 128);
567
-            $ctx[4] = 128;
568
-        }
569
-
570
-        return $ctx;
571
-    }
572
-
573
-    /**
574
-     * Convert a string into an SplFixedArray of integers
575
-     *
576
-     * @internal You should not use this directly from another application
577
-     *
578
-     * @param string $str
579
-     * @return SplFixedArray
580
-     * @psalm-suppress MixedArgumentTypeCoercion
581
-     */
582
-    public static function stringToSplFixedArray($str = '')
583
-    {
584
-        $values = unpack('C*', $str);
585
-        return SplFixedArray::fromArray(array_values($values));
586
-    }
587
-
588
-    /**
589
-     * Convert an SplFixedArray of integers into a string
590
-     *
591
-     * @internal You should not use this directly from another application
592
-     *
593
-     * @param SplFixedArray $a
594
-     * @return string
595
-     */
596
-    public static function SplFixedArrayToString(SplFixedArray $a)
597
-    {
598
-        /**
599
-         * @var array<int, string|int>
600
-         */
601
-        $arr = $a->toArray();
602
-        $c = $a->count();
603
-        array_unshift($arr, str_repeat('C', $c));
604
-        return (string) (call_user_func_array('pack', $arr));
605
-    }
606
-
607
-    /**
608
-     * @internal You should not use this directly from another application
609
-     *
610
-     * @param SplFixedArray $ctx
611
-     * @return string
612
-     * @throws TypeError
613
-     * @psalm-suppress MixedArgument
614
-     * @psalm-suppress MixedArrayAccess
615
-     * @psalm-suppress MixedArrayAssignment
616
-     * @psalm-suppress MixedMethodCall
617
-     */
618
-    public static function contextToString(SplFixedArray $ctx)
619
-    {
620
-        $str = '';
621
-        /** @var array<int, ParagonIE_Sodium_Core32_Int64> $ctxA */
622
-        $ctxA = $ctx[0]->toArray();
623
-
624
-        # uint64_t h[8];
625
-        for ($i = 0; $i < 8; ++$i) {
626
-            if (!($ctxA[$i] instanceof ParagonIE_Sodium_Core32_Int64)) {
627
-                throw new TypeError('Not an instance of Int64');
628
-            }
629
-            /** @var ParagonIE_Sodium_Core32_Int64 $ctxAi */
630
-            $ctxAi = $ctxA[$i];
631
-            $str .= $ctxAi->toReverseString();
632
-        }
633
-
634
-        # uint64_t t[2];
635
-        # uint64_t f[2];
636
-        for ($i = 1; $i < 3; ++$i) {
637
-            /** @var array<int, ParagonIE_Sodium_Core32_Int64> $ctxA */
638
-            $ctxA = $ctx[$i]->toArray();
639
-            /** @var ParagonIE_Sodium_Core32_Int64 $ctxA1 */
640
-            $ctxA1 = $ctxA[0];
641
-            /** @var ParagonIE_Sodium_Core32_Int64 $ctxA2 */
642
-            $ctxA2 = $ctxA[1];
643
-
644
-            $str .= $ctxA1->toReverseString();
645
-            $str .= $ctxA2->toReverseString();
646
-        }
647
-
648
-        # uint8_t buf[2 * 128];
649
-        $str .= self::SplFixedArrayToString($ctx[3]);
650
-
651
-        /** @var int $ctx4 */
652
-        $ctx4 = $ctx[4];
653
-
654
-        # size_t buflen;
655
-        $str .= implode('', array(
656
-            self::intToChr($ctx4 & 0xff),
657
-            self::intToChr(($ctx4 >> 8) & 0xff),
658
-            self::intToChr(($ctx4 >> 16) & 0xff),
659
-            self::intToChr(($ctx4 >> 24) & 0xff),
660
-            "\x00\x00\x00\x00"
661
-            /*
14
+	/**
15
+	 * @var SplFixedArray
16
+	 */
17
+	public static $iv;
18
+
19
+	/**
20
+	 * @var array<int, array<int, int>>
21
+	 */
22
+	public static $sigma = array(
23
+		array(  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15),
24
+		array( 14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3),
25
+		array( 11,  8, 12,  0,  5,  2, 15, 13, 10, 14,  3,  6,  7,  1,  9,  4),
26
+		array(  7,  9,  3,  1, 13, 12, 11, 14,  2,  6,  5, 10,  4,  0, 15,  8),
27
+		array(  9,  0,  5,  7,  2,  4, 10, 15, 14,  1, 11, 12,  6,  8,  3, 13),
28
+		array(  2, 12,  6, 10,  0, 11,  8,  3,  4, 13,  7,  5, 15, 14,  1,  9),
29
+		array( 12,  5,  1, 15, 14, 13,  4, 10,  0,  7,  6,  3,  9,  2,  8, 11),
30
+		array( 13, 11,  7, 14, 12,  1,  3,  9,  5,  0, 15,  4,  8,  6,  2, 10),
31
+		array(  6, 15, 14,  9, 11,  3,  0,  8, 12,  2, 13,  7,  1,  4, 10,  5),
32
+		array( 10,  2,  8,  4,  7,  6,  1,  5, 15, 11,  9, 14,  3, 12, 13 , 0),
33
+		array(  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15),
34
+		array( 14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3)
35
+	);
36
+
37
+	const BLOCKBYTES = 128;
38
+	const OUTBYTES   = 64;
39
+	const KEYBYTES   = 64;
40
+
41
+	/**
42
+	 * Turn two 32-bit integers into a fixed array representing a 64-bit integer.
43
+	 *
44
+	 * @internal You should not use this directly from another application
45
+	 *
46
+	 * @param int $high
47
+	 * @param int $low
48
+	 * @return ParagonIE_Sodium_Core32_Int64
49
+	 * @throws SodiumException
50
+	 * @throws TypeError
51
+	 */
52
+	public static function new64($high, $low)
53
+	{
54
+		return ParagonIE_Sodium_Core32_Int64::fromInts($low, $high);
55
+	}
56
+
57
+	/**
58
+	 * Convert an arbitrary number into an SplFixedArray of two 32-bit integers
59
+	 * that represents a 64-bit integer.
60
+	 *
61
+	 * @internal You should not use this directly from another application
62
+	 *
63
+	 * @param int $num
64
+	 * @return ParagonIE_Sodium_Core32_Int64
65
+	 * @throws SodiumException
66
+	 * @throws TypeError
67
+	 */
68
+	protected static function to64($num)
69
+	{
70
+		list($hi, $lo) = self::numericTo64BitInteger($num);
71
+		return self::new64($hi, $lo);
72
+	}
73
+
74
+	/**
75
+	 * Adds two 64-bit integers together, returning their sum as a SplFixedArray
76
+	 * containing two 32-bit integers (representing a 64-bit integer).
77
+	 *
78
+	 * @internal You should not use this directly from another application
79
+	 *
80
+	 * @param ParagonIE_Sodium_Core32_Int64 $x
81
+	 * @param ParagonIE_Sodium_Core32_Int64 $y
82
+	 * @return ParagonIE_Sodium_Core32_Int64
83
+	 */
84
+	protected static function add64($x, $y)
85
+	{
86
+		return $x->addInt64($y);
87
+	}
88
+
89
+	/**
90
+	 * @internal You should not use this directly from another application
91
+	 *
92
+	 * @param ParagonIE_Sodium_Core32_Int64 $x
93
+	 * @param ParagonIE_Sodium_Core32_Int64 $y
94
+	 * @param ParagonIE_Sodium_Core32_Int64 $z
95
+	 * @return ParagonIE_Sodium_Core32_Int64
96
+	 */
97
+	public static function add364($x, $y, $z)
98
+	{
99
+		return $x->addInt64($y)->addInt64($z);
100
+	}
101
+
102
+	/**
103
+	 * @internal You should not use this directly from another application
104
+	 *
105
+	 * @param ParagonIE_Sodium_Core32_Int64 $x
106
+	 * @param ParagonIE_Sodium_Core32_Int64 $y
107
+	 * @return ParagonIE_Sodium_Core32_Int64
108
+	 * @throws TypeError
109
+	 */
110
+	public static function xor64(ParagonIE_Sodium_Core32_Int64 $x, ParagonIE_Sodium_Core32_Int64 $y)
111
+	{
112
+		return $x->xorInt64($y);
113
+	}
114
+
115
+	/**
116
+	 * @internal You should not use this directly from another application
117
+	 *
118
+	 * @param ParagonIE_Sodium_Core32_Int64 $x
119
+	 * @param int $c
120
+	 * @return ParagonIE_Sodium_Core32_Int64
121
+	 * @throws SodiumException
122
+	 * @throws TypeError
123
+	 */
124
+	public static function rotr64(ParagonIE_Sodium_Core32_Int64 $x, $c)
125
+	{
126
+		return $x->rotateRight($c);
127
+	}
128
+
129
+	/**
130
+	 * @internal You should not use this directly from another application
131
+	 *
132
+	 * @param SplFixedArray $x
133
+	 * @param int $i
134
+	 * @return ParagonIE_Sodium_Core32_Int64
135
+	 * @throws SodiumException
136
+	 * @throws TypeError
137
+	 */
138
+	public static function load64($x, $i)
139
+	{
140
+		/** @var int $l */
141
+		$l = (int) ($x[$i])
142
+			 | ((int) ($x[$i+1]) << 8)
143
+			 | ((int) ($x[$i+2]) << 16)
144
+			 | ((int) ($x[$i+3]) << 24);
145
+		/** @var int $h */
146
+		$h = (int) ($x[$i+4])
147
+			 | ((int) ($x[$i+5]) << 8)
148
+			 | ((int) ($x[$i+6]) << 16)
149
+			 | ((int) ($x[$i+7]) << 24);
150
+		return self::new64($h, $l);
151
+	}
152
+
153
+	/**
154
+	 * @internal You should not use this directly from another application
155
+	 *
156
+	 * @param SplFixedArray $x
157
+	 * @param int $i
158
+	 * @param ParagonIE_Sodium_Core32_Int64 $u
159
+	 * @return void
160
+	 * @throws TypeError
161
+	 * @psalm-suppress MixedArgument
162
+	 * @psalm-suppress MixedAssignment
163
+	 * @psalm-suppress MixedArrayAccess
164
+	 * @psalm-suppress MixedArrayAssignment
165
+	 * @psalm-suppress MixedArrayOffset
166
+	 */
167
+	public static function store64(SplFixedArray $x, $i, ParagonIE_Sodium_Core32_Int64 $u)
168
+	{
169
+		$v = clone $u;
170
+		$maxLength = $x->getSize() - 1;
171
+		for ($j = 0; $j < 8; ++$j) {
172
+			$k = 3 - ($j >> 1);
173
+			$x[$i] = $v->limbs[$k] & 0xff;
174
+			if (++$i > $maxLength) {
175
+				return;
176
+			}
177
+			$v->limbs[$k] >>= 8;
178
+		}
179
+	}
180
+
181
+	/**
182
+	 * This just sets the $iv static variable.
183
+	 *
184
+	 * @internal You should not use this directly from another application
185
+	 *
186
+	 * @return void
187
+	 * @throws SodiumException
188
+	 * @throws TypeError
189
+	 */
190
+	public static function pseudoConstructor()
191
+	{
192
+		static $called = false;
193
+		if ($called) {
194
+			return;
195
+		}
196
+		self::$iv = new SplFixedArray(8);
197
+		self::$iv[0] = self::new64(0x6a09e667, 0xf3bcc908);
198
+		self::$iv[1] = self::new64(0xbb67ae85, 0x84caa73b);
199
+		self::$iv[2] = self::new64(0x3c6ef372, 0xfe94f82b);
200
+		self::$iv[3] = self::new64(0xa54ff53a, 0x5f1d36f1);
201
+		self::$iv[4] = self::new64(0x510e527f, 0xade682d1);
202
+		self::$iv[5] = self::new64(0x9b05688c, 0x2b3e6c1f);
203
+		self::$iv[6] = self::new64(0x1f83d9ab, 0xfb41bd6b);
204
+		self::$iv[7] = self::new64(0x5be0cd19, 0x137e2179);
205
+
206
+		$called = true;
207
+	}
208
+
209
+	/**
210
+	 * Returns a fresh BLAKE2 context.
211
+	 *
212
+	 * @internal You should not use this directly from another application
213
+	 *
214
+	 * @return SplFixedArray
215
+	 * @throws TypeError
216
+	 * @psalm-suppress MixedArgument
217
+	 * @psalm-suppress MixedAssignment
218
+	 * @psalm-suppress MixedArrayAccess
219
+	 * @psalm-suppress MixedArrayAssignment
220
+	 * @psalm-suppress MixedArrayOffset
221
+	 * @throws SodiumException
222
+	 * @throws TypeError
223
+	 */
224
+	protected static function context()
225
+	{
226
+		$ctx    = new SplFixedArray(6);
227
+		$ctx[0] = new SplFixedArray(8);   // h
228
+		$ctx[1] = new SplFixedArray(2);   // t
229
+		$ctx[2] = new SplFixedArray(2);   // f
230
+		$ctx[3] = new SplFixedArray(256); // buf
231
+		$ctx[4] = 0;                      // buflen
232
+		$ctx[5] = 0;                      // last_node (uint8_t)
233
+
234
+		for ($i = 8; $i--;) {
235
+			$ctx[0][$i] = self::$iv[$i];
236
+		}
237
+		for ($i = 256; $i--;) {
238
+			$ctx[3][$i] = 0;
239
+		}
240
+
241
+		$zero = self::new64(0, 0);
242
+		$ctx[1][0] = $zero;
243
+		$ctx[1][1] = $zero;
244
+		$ctx[2][0] = $zero;
245
+		$ctx[2][1] = $zero;
246
+
247
+		return $ctx;
248
+	}
249
+
250
+	/**
251
+	 * @internal You should not use this directly from another application
252
+	 *
253
+	 * @param SplFixedArray $ctx
254
+	 * @param SplFixedArray $buf
255
+	 * @return void
256
+	 * @throws SodiumException
257
+	 * @throws TypeError
258
+	 * @psalm-suppress MixedArgument
259
+	 * @psalm-suppress MixedArrayAccess
260
+	 * @psalm-suppress MixedArrayAssignment
261
+	 * @psalm-suppress MixedAssignment
262
+	 */
263
+	protected static function compress(SplFixedArray $ctx, SplFixedArray $buf)
264
+	{
265
+		$m = new SplFixedArray(16);
266
+		$v = new SplFixedArray(16);
267
+
268
+		for ($i = 16; $i--;) {
269
+			$m[$i] = self::load64($buf, $i << 3);
270
+		}
271
+
272
+		for ($i = 8; $i--;) {
273
+			$v[$i] = $ctx[0][$i];
274
+		}
275
+
276
+		$v[ 8] = self::$iv[0];
277
+		$v[ 9] = self::$iv[1];
278
+		$v[10] = self::$iv[2];
279
+		$v[11] = self::$iv[3];
280
+
281
+		$v[12] = self::xor64($ctx[1][0], self::$iv[4]);
282
+		$v[13] = self::xor64($ctx[1][1], self::$iv[5]);
283
+		$v[14] = self::xor64($ctx[2][0], self::$iv[6]);
284
+		$v[15] = self::xor64($ctx[2][1], self::$iv[7]);
285
+
286
+		for ($r = 0; $r < 12; ++$r) {
287
+			$v = self::G($r, 0, 0, 4, 8, 12, $v, $m);
288
+			$v = self::G($r, 1, 1, 5, 9, 13, $v, $m);
289
+			$v = self::G($r, 2, 2, 6, 10, 14, $v, $m);
290
+			$v = self::G($r, 3, 3, 7, 11, 15, $v, $m);
291
+			$v = self::G($r, 4, 0, 5, 10, 15, $v, $m);
292
+			$v = self::G($r, 5, 1, 6, 11, 12, $v, $m);
293
+			$v = self::G($r, 6, 2, 7, 8, 13, $v, $m);
294
+			$v = self::G($r, 7, 3, 4, 9, 14, $v, $m);
295
+		}
296
+
297
+		for ($i = 8; $i--;) {
298
+			$ctx[0][$i] = self::xor64(
299
+				$ctx[0][$i], self::xor64($v[$i], $v[$i+8])
300
+			);
301
+		}
302
+	}
303
+
304
+	/**
305
+	 * @internal You should not use this directly from another application
306
+	 *
307
+	 * @param int $r
308
+	 * @param int $i
309
+	 * @param int $a
310
+	 * @param int $b
311
+	 * @param int $c
312
+	 * @param int $d
313
+	 * @param SplFixedArray $v
314
+	 * @param SplFixedArray $m
315
+	 * @return SplFixedArray
316
+	 * @throws SodiumException
317
+	 * @throws TypeError
318
+	 * @psalm-suppress MixedArgument
319
+	 * @psalm-suppress MixedArrayOffset
320
+	 */
321
+	public static function G($r, $i, $a, $b, $c, $d, SplFixedArray $v, SplFixedArray $m)
322
+	{
323
+		$v[$a] = self::add364($v[$a], $v[$b], $m[self::$sigma[$r][$i << 1]]);
324
+		$v[$d] = self::rotr64(self::xor64($v[$d], $v[$a]), 32);
325
+		$v[$c] = self::add64($v[$c], $v[$d]);
326
+		$v[$b] = self::rotr64(self::xor64($v[$b], $v[$c]), 24);
327
+		$v[$a] = self::add364($v[$a], $v[$b], $m[self::$sigma[$r][($i << 1) + 1]]);
328
+		$v[$d] = self::rotr64(self::xor64($v[$d], $v[$a]), 16);
329
+		$v[$c] = self::add64($v[$c], $v[$d]);
330
+		$v[$b] = self::rotr64(self::xor64($v[$b], $v[$c]), 63);
331
+		return $v;
332
+	}
333
+
334
+	/**
335
+	 * @internal You should not use this directly from another application
336
+	 *
337
+	 * @param SplFixedArray $ctx
338
+	 * @param int $inc
339
+	 * @return void
340
+	 * @throws SodiumException
341
+	 * @throws TypeError
342
+	 * @psalm-suppress MixedArgument
343
+	 * @psalm-suppress MixedArrayAccess
344
+	 * @psalm-suppress MixedArrayAssignment
345
+	 */
346
+	public static function increment_counter($ctx, $inc)
347
+	{
348
+		if ($inc < 0) {
349
+			throw new SodiumException('Increasing by a negative number makes no sense.');
350
+		}
351
+		$t = self::to64($inc);
352
+		# S->t is $ctx[1] in our implementation
353
+
354
+		# S->t[0] = ( uint64_t )( t >> 0 );
355
+		$ctx[1][0] = self::add64($ctx[1][0], $t);
356
+
357
+		# S->t[1] += ( S->t[0] < inc );
358
+		if (!($ctx[1][0] instanceof ParagonIE_Sodium_Core32_Int64)) {
359
+			throw new TypeError('Not an int64');
360
+		}
361
+		/** @var ParagonIE_Sodium_Core32_Int64 $c*/
362
+		$c = $ctx[1][0];
363
+		if ($c->isLessThanInt($inc)) {
364
+			$ctx[1][1] = self::add64($ctx[1][1], self::to64(1));
365
+		}
366
+	}
367
+
368
+	/**
369
+	 * @internal You should not use this directly from another application
370
+	 *
371
+	 * @param SplFixedArray $ctx
372
+	 * @param SplFixedArray $p
373
+	 * @param int $plen
374
+	 * @return void
375
+	 * @throws SodiumException
376
+	 * @throws TypeError
377
+	 * @psalm-suppress MixedArgument
378
+	 * @psalm-suppress MixedAssignment
379
+	 * @psalm-suppress MixedArrayAccess
380
+	 * @psalm-suppress MixedArrayAssignment
381
+	 * @psalm-suppress MixedArrayOffset
382
+	 * @psalm-suppress MixedMethodCall
383
+	 * @psalm-suppress MixedOperand
384
+	 */
385
+	public static function update(SplFixedArray $ctx, SplFixedArray $p, $plen)
386
+	{
387
+		self::pseudoConstructor();
388
+
389
+		$offset = 0;
390
+		while ($plen > 0) {
391
+			$left = $ctx[4];
392
+			$fill = 256 - $left;
393
+
394
+			if ($plen > $fill) {
395
+				# memcpy( S->buf + left, in, fill ); /* Fill buffer */
396
+				for ($i = $fill; $i--;) {
397
+					$ctx[3][$i + $left] = $p[$i + $offset];
398
+				}
399
+
400
+				# S->buflen += fill;
401
+				$ctx[4] += $fill;
402
+
403
+				# blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES );
404
+				self::increment_counter($ctx, 128);
405
+
406
+				# blake2b_compress( S, S->buf ); /* Compress */
407
+				self::compress($ctx, $ctx[3]);
408
+
409
+				# memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); /* Shift buffer left */
410
+				for ($i = 128; $i--;) {
411
+					$ctx[3][$i] = $ctx[3][$i + 128];
412
+				}
413
+
414
+				# S->buflen -= BLAKE2B_BLOCKBYTES;
415
+				$ctx[4] -= 128;
416
+
417
+				# in += fill;
418
+				$offset += $fill;
419
+
420
+				# inlen -= fill;
421
+				$plen -= $fill;
422
+			} else {
423
+				for ($i = $plen; $i--;) {
424
+					$ctx[3][$i + $left] = $p[$i + $offset];
425
+				}
426
+				$ctx[4] += $plen;
427
+				$offset += $plen;
428
+				$plen -= $plen;
429
+			}
430
+		}
431
+	}
432
+
433
+	/**
434
+	 * @internal You should not use this directly from another application
435
+	 *
436
+	 * @param SplFixedArray $ctx
437
+	 * @param SplFixedArray $out
438
+	 * @return SplFixedArray
439
+	 * @throws SodiumException
440
+	 * @throws TypeError
441
+	 * @psalm-suppress MixedArgument
442
+	 * @psalm-suppress MixedAssignment
443
+	 * @psalm-suppress MixedArrayAccess
444
+	 * @psalm-suppress MixedArrayAssignment
445
+	 * @psalm-suppress MixedArrayOffset
446
+	 * @psalm-suppress MixedMethodCall
447
+	 * @psalm-suppress MixedOperand
448
+	 */
449
+	public static function finish(SplFixedArray $ctx, SplFixedArray $out)
450
+	{
451
+		self::pseudoConstructor();
452
+		if ($ctx[4] > 128) {
453
+			self::increment_counter($ctx, 128);
454
+			self::compress($ctx, $ctx[3]);
455
+			$ctx[4] -= 128;
456
+			if ($ctx[4] > 128) {
457
+				throw new SodiumException('Failed to assert that buflen <= 128 bytes');
458
+			}
459
+			for ($i = $ctx[4]; $i--;) {
460
+				$ctx[3][$i] = $ctx[3][$i + 128];
461
+			}
462
+		}
463
+
464
+		self::increment_counter($ctx, $ctx[4]);
465
+		$ctx[2][0] = self::new64(0xffffffff, 0xffffffff);
466
+
467
+		for ($i = 256 - $ctx[4]; $i--;) {
468
+			/** @var int $i */
469
+			$ctx[3][$i + $ctx[4]] = 0;
470
+		}
471
+
472
+		self::compress($ctx, $ctx[3]);
473
+
474
+		$i = (int) (($out->getSize() - 1) / 8);
475
+		for (; $i >= 0; --$i) {
476
+			self::store64($out, $i << 3, $ctx[0][$i]);
477
+		}
478
+		return $out;
479
+	}
480
+
481
+	/**
482
+	 * @internal You should not use this directly from another application
483
+	 *
484
+	 * @param SplFixedArray|null $key
485
+	 * @param int $outlen
486
+	 * @param SplFixedArray|null $salt
487
+	 * @param SplFixedArray|null $personal
488
+	 * @return SplFixedArray
489
+	 * @throws SodiumException
490
+	 * @throws TypeError
491
+	 * @psalm-suppress MixedArgument
492
+	 * @psalm-suppress MixedAssignment
493
+	 * @psalm-suppress MixedArrayAccess
494
+	 * @psalm-suppress MixedArrayAssignment
495
+	 * @psalm-suppress MixedMethodCall
496
+	 */
497
+	public static function init(
498
+		$key = null,
499
+		$outlen = 64,
500
+		$salt = null,
501
+		$personal = null
502
+	) {
503
+		self::pseudoConstructor();
504
+		$klen = 0;
505
+
506
+		if ($key !== null) {
507
+			if (count($key) > 64) {
508
+				throw new SodiumException('Invalid key size');
509
+			}
510
+			$klen = count($key);
511
+		}
512
+
513
+		if ($outlen > 64) {
514
+			throw new SodiumException('Invalid output size');
515
+		}
516
+
517
+		$ctx = self::context();
518
+
519
+		$p = new SplFixedArray(64);
520
+		// Zero our param buffer...
521
+		for ($i = 64; --$i;) {
522
+			$p[$i] = 0;
523
+		}
524
+
525
+		$p[0] = $outlen; // digest_length
526
+		$p[1] = $klen;   // key_length
527
+		$p[2] = 1;       // fanout
528
+		$p[3] = 1;       // depth
529
+
530
+		if ($salt instanceof SplFixedArray) {
531
+			// salt: [32] through [47]
532
+			for ($i = 0; $i < 16; ++$i) {
533
+				$p[32 + $i] = (int) $salt[$i];
534
+			}
535
+		}
536
+		if ($personal instanceof SplFixedArray) {
537
+			// personal: [48] through [63]
538
+			for ($i = 0; $i < 16; ++$i) {
539
+				$p[48 + $i] = (int) $personal[$i];
540
+			}
541
+		}
542
+
543
+		$ctx[0][0] = self::xor64(
544
+			$ctx[0][0],
545
+			self::load64($p, 0)
546
+		);
547
+
548
+		if ($salt instanceof SplFixedArray || $personal instanceof SplFixedArray) {
549
+			// We need to do what blake2b_init_param() does:
550
+			for ($i = 1; $i < 8; ++$i) {
551
+				$ctx[0][$i] = self::xor64(
552
+					$ctx[0][$i],
553
+					self::load64($p, $i << 3)
554
+				);
555
+			}
556
+		}
557
+
558
+		if ($klen > 0 && $key instanceof SplFixedArray) {
559
+			$block = new SplFixedArray(128);
560
+			for ($i = 128; $i--;) {
561
+				$block[$i] = 0;
562
+			}
563
+			for ($i = $klen; $i--;) {
564
+				$block[$i] = $key[$i];
565
+			}
566
+			self::update($ctx, $block, 128);
567
+			$ctx[4] = 128;
568
+		}
569
+
570
+		return $ctx;
571
+	}
572
+
573
+	/**
574
+	 * Convert a string into an SplFixedArray of integers
575
+	 *
576
+	 * @internal You should not use this directly from another application
577
+	 *
578
+	 * @param string $str
579
+	 * @return SplFixedArray
580
+	 * @psalm-suppress MixedArgumentTypeCoercion
581
+	 */
582
+	public static function stringToSplFixedArray($str = '')
583
+	{
584
+		$values = unpack('C*', $str);
585
+		return SplFixedArray::fromArray(array_values($values));
586
+	}
587
+
588
+	/**
589
+	 * Convert an SplFixedArray of integers into a string
590
+	 *
591
+	 * @internal You should not use this directly from another application
592
+	 *
593
+	 * @param SplFixedArray $a
594
+	 * @return string
595
+	 */
596
+	public static function SplFixedArrayToString(SplFixedArray $a)
597
+	{
598
+		/**
599
+		 * @var array<int, string|int>
600
+		 */
601
+		$arr = $a->toArray();
602
+		$c = $a->count();
603
+		array_unshift($arr, str_repeat('C', $c));
604
+		return (string) (call_user_func_array('pack', $arr));
605
+	}
606
+
607
+	/**
608
+	 * @internal You should not use this directly from another application
609
+	 *
610
+	 * @param SplFixedArray $ctx
611
+	 * @return string
612
+	 * @throws TypeError
613
+	 * @psalm-suppress MixedArgument
614
+	 * @psalm-suppress MixedArrayAccess
615
+	 * @psalm-suppress MixedArrayAssignment
616
+	 * @psalm-suppress MixedMethodCall
617
+	 */
618
+	public static function contextToString(SplFixedArray $ctx)
619
+	{
620
+		$str = '';
621
+		/** @var array<int, ParagonIE_Sodium_Core32_Int64> $ctxA */
622
+		$ctxA = $ctx[0]->toArray();
623
+
624
+		# uint64_t h[8];
625
+		for ($i = 0; $i < 8; ++$i) {
626
+			if (!($ctxA[$i] instanceof ParagonIE_Sodium_Core32_Int64)) {
627
+				throw new TypeError('Not an instance of Int64');
628
+			}
629
+			/** @var ParagonIE_Sodium_Core32_Int64 $ctxAi */
630
+			$ctxAi = $ctxA[$i];
631
+			$str .= $ctxAi->toReverseString();
632
+		}
633
+
634
+		# uint64_t t[2];
635
+		# uint64_t f[2];
636
+		for ($i = 1; $i < 3; ++$i) {
637
+			/** @var array<int, ParagonIE_Sodium_Core32_Int64> $ctxA */
638
+			$ctxA = $ctx[$i]->toArray();
639
+			/** @var ParagonIE_Sodium_Core32_Int64 $ctxA1 */
640
+			$ctxA1 = $ctxA[0];
641
+			/** @var ParagonIE_Sodium_Core32_Int64 $ctxA2 */
642
+			$ctxA2 = $ctxA[1];
643
+
644
+			$str .= $ctxA1->toReverseString();
645
+			$str .= $ctxA2->toReverseString();
646
+		}
647
+
648
+		# uint8_t buf[2 * 128];
649
+		$str .= self::SplFixedArrayToString($ctx[3]);
650
+
651
+		/** @var int $ctx4 */
652
+		$ctx4 = $ctx[4];
653
+
654
+		# size_t buflen;
655
+		$str .= implode('', array(
656
+			self::intToChr($ctx4 & 0xff),
657
+			self::intToChr(($ctx4 >> 8) & 0xff),
658
+			self::intToChr(($ctx4 >> 16) & 0xff),
659
+			self::intToChr(($ctx4 >> 24) & 0xff),
660
+			"\x00\x00\x00\x00"
661
+			/*
662 662
             self::intToChr(($ctx4 >> 32) & 0xff),
663 663
             self::intToChr(($ctx4 >> 40) & 0xff),
664 664
             self::intToChr(($ctx4 >> 48) & 0xff),
665 665
             self::intToChr(($ctx4 >> 56) & 0xff)
666 666
             */
667
-        ));
668
-        # uint8_t last_node;
669
-        return $str . self::intToChr($ctx[5]) . str_repeat("\x00", 23);
670
-    }
671
-
672
-    /**
673
-     * Creates an SplFixedArray containing other SplFixedArray elements, from
674
-     * a string (compatible with \Sodium\crypto_generichash_{init, update, final})
675
-     *
676
-     * @internal You should not use this directly from another application
677
-     *
678
-     * @param string $string
679
-     * @return SplFixedArray
680
-     * @throws SodiumException
681
-     * @throws TypeError
682
-     * @psalm-suppress MixedArrayAccess
683
-     * @psalm-suppress MixedArrayAssignment
684
-     */
685
-    public static function stringToContext($string)
686
-    {
687
-        $ctx = self::context();
688
-
689
-        # uint64_t h[8];
690
-        for ($i = 0; $i < 8; ++$i) {
691
-            $ctx[0][$i] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
692
-                self::substr($string, (($i << 3) + 0), 8)
693
-            );
694
-        }
695
-
696
-        # uint64_t t[2];
697
-        # uint64_t f[2];
698
-        for ($i = 1; $i < 3; ++$i) {
699
-            $ctx[$i][1] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
700
-                self::substr($string, 72 + (($i - 1) << 4), 8)
701
-            );
702
-            $ctx[$i][0] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
703
-                self::substr($string, 64 + (($i - 1) << 4), 8)
704
-            );
705
-        }
706
-
707
-        # uint8_t buf[2 * 128];
708
-        $ctx[3] = self::stringToSplFixedArray(self::substr($string, 96, 256));
709
-
710
-        # uint8_t buf[2 * 128];
711
-        $int = 0;
712
-        for ($i = 0; $i < 8; ++$i) {
713
-            $int |= self::chrToInt($string[352 + $i]) << ($i << 3);
714
-        }
715
-        $ctx[4] = $int;
716
-
717
-        return $ctx;
718
-    }
667
+		));
668
+		# uint8_t last_node;
669
+		return $str . self::intToChr($ctx[5]) . str_repeat("\x00", 23);
670
+	}
671
+
672
+	/**
673
+	 * Creates an SplFixedArray containing other SplFixedArray elements, from
674
+	 * a string (compatible with \Sodium\crypto_generichash_{init, update, final})
675
+	 *
676
+	 * @internal You should not use this directly from another application
677
+	 *
678
+	 * @param string $string
679
+	 * @return SplFixedArray
680
+	 * @throws SodiumException
681
+	 * @throws TypeError
682
+	 * @psalm-suppress MixedArrayAccess
683
+	 * @psalm-suppress MixedArrayAssignment
684
+	 */
685
+	public static function stringToContext($string)
686
+	{
687
+		$ctx = self::context();
688
+
689
+		# uint64_t h[8];
690
+		for ($i = 0; $i < 8; ++$i) {
691
+			$ctx[0][$i] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
692
+				self::substr($string, (($i << 3) + 0), 8)
693
+			);
694
+		}
695
+
696
+		# uint64_t t[2];
697
+		# uint64_t f[2];
698
+		for ($i = 1; $i < 3; ++$i) {
699
+			$ctx[$i][1] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
700
+				self::substr($string, 72 + (($i - 1) << 4), 8)
701
+			);
702
+			$ctx[$i][0] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
703
+				self::substr($string, 64 + (($i - 1) << 4), 8)
704
+			);
705
+		}
706
+
707
+		# uint8_t buf[2 * 128];
708
+		$ctx[3] = self::stringToSplFixedArray(self::substr($string, 96, 256));
709
+
710
+		# uint8_t buf[2 * 128];
711
+		$int = 0;
712
+		for ($i = 0; $i < 8; ++$i) {
713
+			$int |= self::chrToInt($string[352 + $i]) << ($i << 3);
714
+		}
715
+		$ctx[4] = $int;
716
+
717
+		return $ctx;
718
+	}
719 719
 }
Please login to merge, or discard this patch.
Spacing   +221 added lines, -221 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core_BLAKE2b', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core_BLAKE2b', false ) ) {
4 4
     return;
5 5
 }
6 6
 
@@ -20,18 +20,18 @@  discard block
 block discarded – undo
20 20
      * @var array<int, array<int, int>>
21 21
      */
22 22
     public static $sigma = array(
23
-        array(  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15),
24
-        array( 14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3),
25
-        array( 11,  8, 12,  0,  5,  2, 15, 13, 10, 14,  3,  6,  7,  1,  9,  4),
26
-        array(  7,  9,  3,  1, 13, 12, 11, 14,  2,  6,  5, 10,  4,  0, 15,  8),
27
-        array(  9,  0,  5,  7,  2,  4, 10, 15, 14,  1, 11, 12,  6,  8,  3, 13),
28
-        array(  2, 12,  6, 10,  0, 11,  8,  3,  4, 13,  7,  5, 15, 14,  1,  9),
29
-        array( 12,  5,  1, 15, 14, 13,  4, 10,  0,  7,  6,  3,  9,  2,  8, 11),
30
-        array( 13, 11,  7, 14, 12,  1,  3,  9,  5,  0, 15,  4,  8,  6,  2, 10),
31
-        array(  6, 15, 14,  9, 11,  3,  0,  8, 12,  2, 13,  7,  1,  4, 10,  5),
32
-        array( 10,  2,  8,  4,  7,  6,  1,  5, 15, 11,  9, 14,  3, 12, 13 , 0),
33
-        array(  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15),
34
-        array( 14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3)
23
+        array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ),
24
+        array( 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 ),
25
+        array( 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 ),
26
+        array( 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 ),
27
+        array( 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 ),
28
+        array( 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 ),
29
+        array( 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11 ),
30
+        array( 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10 ),
31
+        array( 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5 ),
32
+        array( 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0 ),
33
+        array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ),
34
+        array( 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 )
35 35
     );
36 36
 
37 37
     const BLOCKBYTES = 128;
@@ -49,9 +49,9 @@  discard block
 block discarded – undo
49 49
      * @throws SodiumException
50 50
      * @throws TypeError
51 51
      */
52
-    public static function new64($high, $low)
52
+    public static function new64( $high, $low )
53 53
     {
54
-        return ParagonIE_Sodium_Core32_Int64::fromInts($low, $high);
54
+        return ParagonIE_Sodium_Core32_Int64::fromInts( $low, $high );
55 55
     }
56 56
 
57 57
     /**
@@ -65,10 +65,10 @@  discard block
 block discarded – undo
65 65
      * @throws SodiumException
66 66
      * @throws TypeError
67 67
      */
68
-    protected static function to64($num)
68
+    protected static function to64( $num )
69 69
     {
70
-        list($hi, $lo) = self::numericTo64BitInteger($num);
71
-        return self::new64($hi, $lo);
70
+        list( $hi, $lo ) = self::numericTo64BitInteger( $num );
71
+        return self::new64( $hi, $lo );
72 72
     }
73 73
 
74 74
     /**
@@ -81,9 +81,9 @@  discard block
 block discarded – undo
81 81
      * @param ParagonIE_Sodium_Core32_Int64 $y
82 82
      * @return ParagonIE_Sodium_Core32_Int64
83 83
      */
84
-    protected static function add64($x, $y)
84
+    protected static function add64( $x, $y )
85 85
     {
86
-        return $x->addInt64($y);
86
+        return $x->addInt64( $y );
87 87
     }
88 88
 
89 89
     /**
@@ -94,9 +94,9 @@  discard block
 block discarded – undo
94 94
      * @param ParagonIE_Sodium_Core32_Int64 $z
95 95
      * @return ParagonIE_Sodium_Core32_Int64
96 96
      */
97
-    public static function add364($x, $y, $z)
97
+    public static function add364( $x, $y, $z )
98 98
     {
99
-        return $x->addInt64($y)->addInt64($z);
99
+        return $x->addInt64( $y )->addInt64( $z );
100 100
     }
101 101
 
102 102
     /**
@@ -107,9 +107,9 @@  discard block
 block discarded – undo
107 107
      * @return ParagonIE_Sodium_Core32_Int64
108 108
      * @throws TypeError
109 109
      */
110
-    public static function xor64(ParagonIE_Sodium_Core32_Int64 $x, ParagonIE_Sodium_Core32_Int64 $y)
110
+    public static function xor64( ParagonIE_Sodium_Core32_Int64 $x, ParagonIE_Sodium_Core32_Int64 $y )
111 111
     {
112
-        return $x->xorInt64($y);
112
+        return $x->xorInt64( $y );
113 113
     }
114 114
 
115 115
     /**
@@ -121,9 +121,9 @@  discard block
 block discarded – undo
121 121
      * @throws SodiumException
122 122
      * @throws TypeError
123 123
      */
124
-    public static function rotr64(ParagonIE_Sodium_Core32_Int64 $x, $c)
124
+    public static function rotr64( ParagonIE_Sodium_Core32_Int64 $x, $c )
125 125
     {
126
-        return $x->rotateRight($c);
126
+        return $x->rotateRight( $c );
127 127
     }
128 128
 
129 129
     /**
@@ -135,19 +135,19 @@  discard block
 block discarded – undo
135 135
      * @throws SodiumException
136 136
      * @throws TypeError
137 137
      */
138
-    public static function load64($x, $i)
138
+    public static function load64( $x, $i )
139 139
     {
140 140
         /** @var int $l */
141
-        $l = (int) ($x[$i])
142
-             | ((int) ($x[$i+1]) << 8)
143
-             | ((int) ($x[$i+2]) << 16)
144
-             | ((int) ($x[$i+3]) << 24);
141
+        $l = (int)( $x[ $i ] )
142
+             | ( (int)( $x[ $i + 1 ] ) << 8 )
143
+             | ( (int)( $x[ $i + 2 ] ) << 16 )
144
+             | ( (int)( $x[ $i + 3 ] ) << 24 );
145 145
         /** @var int $h */
146
-        $h = (int) ($x[$i+4])
147
-             | ((int) ($x[$i+5]) << 8)
148
-             | ((int) ($x[$i+6]) << 16)
149
-             | ((int) ($x[$i+7]) << 24);
150
-        return self::new64($h, $l);
146
+        $h = (int)( $x[ $i + 4 ] )
147
+             | ( (int)( $x[ $i + 5 ] ) << 8 )
148
+             | ( (int)( $x[ $i + 6 ] ) << 16 )
149
+             | ( (int)( $x[ $i + 7 ] ) << 24 );
150
+        return self::new64( $h, $l );
151 151
     }
152 152
 
153 153
     /**
@@ -164,17 +164,17 @@  discard block
 block discarded – undo
164 164
      * @psalm-suppress MixedArrayAssignment
165 165
      * @psalm-suppress MixedArrayOffset
166 166
      */
167
-    public static function store64(SplFixedArray $x, $i, ParagonIE_Sodium_Core32_Int64 $u)
167
+    public static function store64( SplFixedArray $x, $i, ParagonIE_Sodium_Core32_Int64 $u )
168 168
     {
169 169
         $v = clone $u;
170 170
         $maxLength = $x->getSize() - 1;
171
-        for ($j = 0; $j < 8; ++$j) {
172
-            $k = 3 - ($j >> 1);
173
-            $x[$i] = $v->limbs[$k] & 0xff;
171
+        for ( $j = 0; $j < 8; ++$j ) {
172
+            $k = 3 - ( $j >> 1 );
173
+            $x[ $i ] = $v->limbs[ $k ] & 0xff;
174 174
             if (++$i > $maxLength) {
175 175
                 return;
176 176
             }
177
-            $v->limbs[$k] >>= 8;
177
+            $v->limbs[ $k ] >>= 8;
178 178
         }
179 179
     }
180 180
 
@@ -190,18 +190,18 @@  discard block
 block discarded – undo
190 190
     public static function pseudoConstructor()
191 191
     {
192 192
         static $called = false;
193
-        if ($called) {
193
+        if ( $called ) {
194 194
             return;
195 195
         }
196
-        self::$iv = new SplFixedArray(8);
197
-        self::$iv[0] = self::new64(0x6a09e667, 0xf3bcc908);
198
-        self::$iv[1] = self::new64(0xbb67ae85, 0x84caa73b);
199
-        self::$iv[2] = self::new64(0x3c6ef372, 0xfe94f82b);
200
-        self::$iv[3] = self::new64(0xa54ff53a, 0x5f1d36f1);
201
-        self::$iv[4] = self::new64(0x510e527f, 0xade682d1);
202
-        self::$iv[5] = self::new64(0x9b05688c, 0x2b3e6c1f);
203
-        self::$iv[6] = self::new64(0x1f83d9ab, 0xfb41bd6b);
204
-        self::$iv[7] = self::new64(0x5be0cd19, 0x137e2179);
196
+        self::$iv = new SplFixedArray( 8 );
197
+        self::$iv[ 0 ] = self::new64( 0x6a09e667, 0xf3bcc908 );
198
+        self::$iv[ 1 ] = self::new64( 0xbb67ae85, 0x84caa73b );
199
+        self::$iv[ 2 ] = self::new64( 0x3c6ef372, 0xfe94f82b );
200
+        self::$iv[ 3 ] = self::new64( 0xa54ff53a, 0x5f1d36f1 );
201
+        self::$iv[ 4 ] = self::new64( 0x510e527f, 0xade682d1 );
202
+        self::$iv[ 5 ] = self::new64( 0x9b05688c, 0x2b3e6c1f );
203
+        self::$iv[ 6 ] = self::new64( 0x1f83d9ab, 0xfb41bd6b );
204
+        self::$iv[ 7 ] = self::new64( 0x5be0cd19, 0x137e2179 );
205 205
 
206 206
         $called = true;
207 207
     }
@@ -223,26 +223,26 @@  discard block
 block discarded – undo
223 223
      */
224 224
     protected static function context()
225 225
     {
226
-        $ctx    = new SplFixedArray(6);
227
-        $ctx[0] = new SplFixedArray(8);   // h
228
-        $ctx[1] = new SplFixedArray(2);   // t
229
-        $ctx[2] = new SplFixedArray(2);   // f
230
-        $ctx[3] = new SplFixedArray(256); // buf
231
-        $ctx[4] = 0;                      // buflen
232
-        $ctx[5] = 0;                      // last_node (uint8_t)
233
-
234
-        for ($i = 8; $i--;) {
235
-            $ctx[0][$i] = self::$iv[$i];
226
+        $ctx    = new SplFixedArray( 6 );
227
+        $ctx[ 0 ] = new SplFixedArray( 8 ); // h
228
+        $ctx[ 1 ] = new SplFixedArray( 2 ); // t
229
+        $ctx[ 2 ] = new SplFixedArray( 2 ); // f
230
+        $ctx[ 3 ] = new SplFixedArray( 256 ); // buf
231
+        $ctx[ 4 ] = 0; // buflen
232
+        $ctx[ 5 ] = 0; // last_node (uint8_t)
233
+
234
+        for ( $i = 8; $i--; ) {
235
+            $ctx[ 0 ][ $i ] = self::$iv[ $i ];
236 236
         }
237
-        for ($i = 256; $i--;) {
238
-            $ctx[3][$i] = 0;
237
+        for ( $i = 256; $i--; ) {
238
+            $ctx[ 3 ][ $i ] = 0;
239 239
         }
240 240
 
241
-        $zero = self::new64(0, 0);
242
-        $ctx[1][0] = $zero;
243
-        $ctx[1][1] = $zero;
244
-        $ctx[2][0] = $zero;
245
-        $ctx[2][1] = $zero;
241
+        $zero = self::new64( 0, 0 );
242
+        $ctx[ 1 ][ 0 ] = $zero;
243
+        $ctx[ 1 ][ 1 ] = $zero;
244
+        $ctx[ 2 ][ 0 ] = $zero;
245
+        $ctx[ 2 ][ 1 ] = $zero;
246 246
 
247 247
         return $ctx;
248 248
     }
@@ -260,43 +260,43 @@  discard block
 block discarded – undo
260 260
      * @psalm-suppress MixedArrayAssignment
261 261
      * @psalm-suppress MixedAssignment
262 262
      */
263
-    protected static function compress(SplFixedArray $ctx, SplFixedArray $buf)
263
+    protected static function compress( SplFixedArray $ctx, SplFixedArray $buf )
264 264
     {
265
-        $m = new SplFixedArray(16);
266
-        $v = new SplFixedArray(16);
265
+        $m = new SplFixedArray( 16 );
266
+        $v = new SplFixedArray( 16 );
267 267
 
268
-        for ($i = 16; $i--;) {
269
-            $m[$i] = self::load64($buf, $i << 3);
268
+        for ( $i = 16; $i--; ) {
269
+            $m[ $i ] = self::load64( $buf, $i << 3 );
270 270
         }
271 271
 
272
-        for ($i = 8; $i--;) {
273
-            $v[$i] = $ctx[0][$i];
272
+        for ( $i = 8; $i--; ) {
273
+            $v[ $i ] = $ctx[ 0 ][ $i ];
274 274
         }
275 275
 
276
-        $v[ 8] = self::$iv[0];
277
-        $v[ 9] = self::$iv[1];
278
-        $v[10] = self::$iv[2];
279
-        $v[11] = self::$iv[3];
280
-
281
-        $v[12] = self::xor64($ctx[1][0], self::$iv[4]);
282
-        $v[13] = self::xor64($ctx[1][1], self::$iv[5]);
283
-        $v[14] = self::xor64($ctx[2][0], self::$iv[6]);
284
-        $v[15] = self::xor64($ctx[2][1], self::$iv[7]);
285
-
286
-        for ($r = 0; $r < 12; ++$r) {
287
-            $v = self::G($r, 0, 0, 4, 8, 12, $v, $m);
288
-            $v = self::G($r, 1, 1, 5, 9, 13, $v, $m);
289
-            $v = self::G($r, 2, 2, 6, 10, 14, $v, $m);
290
-            $v = self::G($r, 3, 3, 7, 11, 15, $v, $m);
291
-            $v = self::G($r, 4, 0, 5, 10, 15, $v, $m);
292
-            $v = self::G($r, 5, 1, 6, 11, 12, $v, $m);
293
-            $v = self::G($r, 6, 2, 7, 8, 13, $v, $m);
294
-            $v = self::G($r, 7, 3, 4, 9, 14, $v, $m);
276
+        $v[ 8 ] = self::$iv[ 0 ];
277
+        $v[ 9 ] = self::$iv[ 1 ];
278
+        $v[ 10 ] = self::$iv[ 2 ];
279
+        $v[ 11 ] = self::$iv[ 3 ];
280
+
281
+        $v[ 12 ] = self::xor64( $ctx[ 1 ][ 0 ], self::$iv[ 4 ] );
282
+        $v[ 13 ] = self::xor64( $ctx[ 1 ][ 1 ], self::$iv[ 5 ] );
283
+        $v[ 14 ] = self::xor64( $ctx[ 2 ][ 0 ], self::$iv[ 6 ] );
284
+        $v[ 15 ] = self::xor64( $ctx[ 2 ][ 1 ], self::$iv[ 7 ] );
285
+
286
+        for ( $r = 0; $r < 12; ++$r ) {
287
+            $v = self::G( $r, 0, 0, 4, 8, 12, $v, $m );
288
+            $v = self::G( $r, 1, 1, 5, 9, 13, $v, $m );
289
+            $v = self::G( $r, 2, 2, 6, 10, 14, $v, $m );
290
+            $v = self::G( $r, 3, 3, 7, 11, 15, $v, $m );
291
+            $v = self::G( $r, 4, 0, 5, 10, 15, $v, $m );
292
+            $v = self::G( $r, 5, 1, 6, 11, 12, $v, $m );
293
+            $v = self::G( $r, 6, 2, 7, 8, 13, $v, $m );
294
+            $v = self::G( $r, 7, 3, 4, 9, 14, $v, $m );
295 295
         }
296 296
 
297
-        for ($i = 8; $i--;) {
298
-            $ctx[0][$i] = self::xor64(
299
-                $ctx[0][$i], self::xor64($v[$i], $v[$i+8])
297
+        for ( $i = 8; $i--; ) {
298
+            $ctx[ 0 ][ $i ] = self::xor64(
299
+                $ctx[ 0 ][ $i ], self::xor64( $v[ $i ], $v[ $i + 8 ] )
300 300
             );
301 301
         }
302 302
     }
@@ -318,16 +318,16 @@  discard block
 block discarded – undo
318 318
      * @psalm-suppress MixedArgument
319 319
      * @psalm-suppress MixedArrayOffset
320 320
      */
321
-    public static function G($r, $i, $a, $b, $c, $d, SplFixedArray $v, SplFixedArray $m)
321
+    public static function G( $r, $i, $a, $b, $c, $d, SplFixedArray $v, SplFixedArray $m )
322 322
     {
323
-        $v[$a] = self::add364($v[$a], $v[$b], $m[self::$sigma[$r][$i << 1]]);
324
-        $v[$d] = self::rotr64(self::xor64($v[$d], $v[$a]), 32);
325
-        $v[$c] = self::add64($v[$c], $v[$d]);
326
-        $v[$b] = self::rotr64(self::xor64($v[$b], $v[$c]), 24);
327
-        $v[$a] = self::add364($v[$a], $v[$b], $m[self::$sigma[$r][($i << 1) + 1]]);
328
-        $v[$d] = self::rotr64(self::xor64($v[$d], $v[$a]), 16);
329
-        $v[$c] = self::add64($v[$c], $v[$d]);
330
-        $v[$b] = self::rotr64(self::xor64($v[$b], $v[$c]), 63);
323
+        $v[ $a ] = self::add364( $v[ $a ], $v[ $b ], $m[ self::$sigma[ $r ][ $i << 1 ] ] );
324
+        $v[ $d ] = self::rotr64( self::xor64( $v[ $d ], $v[ $a ] ), 32 );
325
+        $v[ $c ] = self::add64( $v[ $c ], $v[ $d ] );
326
+        $v[ $b ] = self::rotr64( self::xor64( $v[ $b ], $v[ $c ] ), 24 );
327
+        $v[ $a ] = self::add364( $v[ $a ], $v[ $b ], $m[ self::$sigma[ $r ][ ( $i << 1 ) + 1 ] ] );
328
+        $v[ $d ] = self::rotr64( self::xor64( $v[ $d ], $v[ $a ] ), 16 );
329
+        $v[ $c ] = self::add64( $v[ $c ], $v[ $d ] );
330
+        $v[ $b ] = self::rotr64( self::xor64( $v[ $b ], $v[ $c ] ), 63 );
331 331
         return $v;
332 332
     }
333 333
 
@@ -343,25 +343,25 @@  discard block
 block discarded – undo
343 343
      * @psalm-suppress MixedArrayAccess
344 344
      * @psalm-suppress MixedArrayAssignment
345 345
      */
346
-    public static function increment_counter($ctx, $inc)
346
+    public static function increment_counter( $ctx, $inc )
347 347
     {
348
-        if ($inc < 0) {
349
-            throw new SodiumException('Increasing by a negative number makes no sense.');
348
+        if ( $inc < 0 ) {
349
+            throw new SodiumException( 'Increasing by a negative number makes no sense.' );
350 350
         }
351
-        $t = self::to64($inc);
351
+        $t = self::to64( $inc );
352 352
         # S->t is $ctx[1] in our implementation
353 353
 
354 354
         # S->t[0] = ( uint64_t )( t >> 0 );
355
-        $ctx[1][0] = self::add64($ctx[1][0], $t);
355
+        $ctx[ 1 ][ 0 ] = self::add64( $ctx[ 1 ][ 0 ], $t );
356 356
 
357 357
         # S->t[1] += ( S->t[0] < inc );
358
-        if (!($ctx[1][0] instanceof ParagonIE_Sodium_Core32_Int64)) {
359
-            throw new TypeError('Not an int64');
358
+        if ( ! ( $ctx[ 1 ][ 0 ] instanceof ParagonIE_Sodium_Core32_Int64 ) ) {
359
+            throw new TypeError( 'Not an int64' );
360 360
         }
361 361
         /** @var ParagonIE_Sodium_Core32_Int64 $c*/
362
-        $c = $ctx[1][0];
363
-        if ($c->isLessThanInt($inc)) {
364
-            $ctx[1][1] = self::add64($ctx[1][1], self::to64(1));
362
+        $c = $ctx[ 1 ][ 0 ];
363
+        if ( $c->isLessThanInt( $inc ) ) {
364
+            $ctx[ 1 ][ 1 ] = self::add64( $ctx[ 1 ][ 1 ], self::to64( 1 ) );
365 365
         }
366 366
     }
367 367
 
@@ -382,37 +382,37 @@  discard block
 block discarded – undo
382 382
      * @psalm-suppress MixedMethodCall
383 383
      * @psalm-suppress MixedOperand
384 384
      */
385
-    public static function update(SplFixedArray $ctx, SplFixedArray $p, $plen)
385
+    public static function update( SplFixedArray $ctx, SplFixedArray $p, $plen )
386 386
     {
387 387
         self::pseudoConstructor();
388 388
 
389 389
         $offset = 0;
390
-        while ($plen > 0) {
391
-            $left = $ctx[4];
390
+        while ( $plen > 0 ) {
391
+            $left = $ctx[ 4 ];
392 392
             $fill = 256 - $left;
393 393
 
394
-            if ($plen > $fill) {
394
+            if ( $plen > $fill ) {
395 395
                 # memcpy( S->buf + left, in, fill ); /* Fill buffer */
396
-                for ($i = $fill; $i--;) {
397
-                    $ctx[3][$i + $left] = $p[$i + $offset];
396
+                for ( $i = $fill; $i--; ) {
397
+                    $ctx[ 3 ][ $i + $left ] = $p[ $i + $offset ];
398 398
                 }
399 399
 
400 400
                 # S->buflen += fill;
401
-                $ctx[4] += $fill;
401
+                $ctx[ 4 ] += $fill;
402 402
 
403 403
                 # blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES );
404
-                self::increment_counter($ctx, 128);
404
+                self::increment_counter( $ctx, 128 );
405 405
 
406 406
                 # blake2b_compress( S, S->buf ); /* Compress */
407
-                self::compress($ctx, $ctx[3]);
407
+                self::compress( $ctx, $ctx[ 3 ] );
408 408
 
409 409
                 # memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); /* Shift buffer left */
410
-                for ($i = 128; $i--;) {
411
-                    $ctx[3][$i] = $ctx[3][$i + 128];
410
+                for ( $i = 128; $i--; ) {
411
+                    $ctx[ 3 ][ $i ] = $ctx[ 3 ][ $i + 128 ];
412 412
                 }
413 413
 
414 414
                 # S->buflen -= BLAKE2B_BLOCKBYTES;
415
-                $ctx[4] -= 128;
415
+                $ctx[ 4 ] -= 128;
416 416
 
417 417
                 # in += fill;
418 418
                 $offset += $fill;
@@ -420,10 +420,10 @@  discard block
 block discarded – undo
420 420
                 # inlen -= fill;
421 421
                 $plen -= $fill;
422 422
             } else {
423
-                for ($i = $plen; $i--;) {
424
-                    $ctx[3][$i + $left] = $p[$i + $offset];
423
+                for ( $i = $plen; $i--; ) {
424
+                    $ctx[ 3 ][ $i + $left ] = $p[ $i + $offset ];
425 425
                 }
426
-                $ctx[4] += $plen;
426
+                $ctx[ 4 ] += $plen;
427 427
                 $offset += $plen;
428 428
                 $plen -= $plen;
429 429
             }
@@ -446,34 +446,34 @@  discard block
 block discarded – undo
446 446
      * @psalm-suppress MixedMethodCall
447 447
      * @psalm-suppress MixedOperand
448 448
      */
449
-    public static function finish(SplFixedArray $ctx, SplFixedArray $out)
449
+    public static function finish( SplFixedArray $ctx, SplFixedArray $out )
450 450
     {
451 451
         self::pseudoConstructor();
452
-        if ($ctx[4] > 128) {
453
-            self::increment_counter($ctx, 128);
454
-            self::compress($ctx, $ctx[3]);
455
-            $ctx[4] -= 128;
456
-            if ($ctx[4] > 128) {
457
-                throw new SodiumException('Failed to assert that buflen <= 128 bytes');
452
+        if ( $ctx[ 4 ] > 128 ) {
453
+            self::increment_counter( $ctx, 128 );
454
+            self::compress( $ctx, $ctx[ 3 ] );
455
+            $ctx[ 4 ] -= 128;
456
+            if ( $ctx[ 4 ] > 128 ) {
457
+                throw new SodiumException( 'Failed to assert that buflen <= 128 bytes' );
458 458
             }
459
-            for ($i = $ctx[4]; $i--;) {
460
-                $ctx[3][$i] = $ctx[3][$i + 128];
459
+            for ( $i = $ctx[ 4 ]; $i--; ) {
460
+                $ctx[ 3 ][ $i ] = $ctx[ 3 ][ $i + 128 ];
461 461
             }
462 462
         }
463 463
 
464
-        self::increment_counter($ctx, $ctx[4]);
465
-        $ctx[2][0] = self::new64(0xffffffff, 0xffffffff);
464
+        self::increment_counter( $ctx, $ctx[ 4 ] );
465
+        $ctx[ 2 ][ 0 ] = self::new64( 0xffffffff, 0xffffffff );
466 466
 
467
-        for ($i = 256 - $ctx[4]; $i--;) {
467
+        for ( $i = 256 - $ctx[ 4 ]; $i--; ) {
468 468
             /** @var int $i */
469
-            $ctx[3][$i + $ctx[4]] = 0;
469
+            $ctx[ 3 ][ $i + $ctx[ 4 ] ] = 0;
470 470
         }
471 471
 
472
-        self::compress($ctx, $ctx[3]);
472
+        self::compress( $ctx, $ctx[ 3 ] );
473 473
 
474
-        $i = (int) (($out->getSize() - 1) / 8);
475
-        for (; $i >= 0; --$i) {
476
-            self::store64($out, $i << 3, $ctx[0][$i]);
474
+        $i = (int)( ( $out->getSize() - 1 ) / 8 );
475
+        for ( ; $i >= 0; --$i ) {
476
+            self::store64( $out, $i << 3, $ctx[ 0 ][ $i ] );
477 477
         }
478 478
         return $out;
479 479
     }
@@ -503,68 +503,68 @@  discard block
 block discarded – undo
503 503
         self::pseudoConstructor();
504 504
         $klen = 0;
505 505
 
506
-        if ($key !== null) {
507
-            if (count($key) > 64) {
508
-                throw new SodiumException('Invalid key size');
506
+        if ( $key !== null ) {
507
+            if ( count( $key ) > 64 ) {
508
+                throw new SodiumException( 'Invalid key size' );
509 509
             }
510
-            $klen = count($key);
510
+            $klen = count( $key );
511 511
         }
512 512
 
513
-        if ($outlen > 64) {
514
-            throw new SodiumException('Invalid output size');
513
+        if ( $outlen > 64 ) {
514
+            throw new SodiumException( 'Invalid output size' );
515 515
         }
516 516
 
517 517
         $ctx = self::context();
518 518
 
519
-        $p = new SplFixedArray(64);
519
+        $p = new SplFixedArray( 64 );
520 520
         // Zero our param buffer...
521
-        for ($i = 64; --$i;) {
522
-            $p[$i] = 0;
521
+        for ( $i = 64; --$i; ) {
522
+            $p[ $i ] = 0;
523 523
         }
524 524
 
525
-        $p[0] = $outlen; // digest_length
526
-        $p[1] = $klen;   // key_length
527
-        $p[2] = 1;       // fanout
528
-        $p[3] = 1;       // depth
525
+        $p[ 0 ] = $outlen; // digest_length
526
+        $p[ 1 ] = $klen; // key_length
527
+        $p[ 2 ] = 1; // fanout
528
+        $p[ 3 ] = 1; // depth
529 529
 
530
-        if ($salt instanceof SplFixedArray) {
530
+        if ( $salt instanceof SplFixedArray ) {
531 531
             // salt: [32] through [47]
532
-            for ($i = 0; $i < 16; ++$i) {
533
-                $p[32 + $i] = (int) $salt[$i];
532
+            for ( $i = 0; $i < 16; ++$i ) {
533
+                $p[ 32 + $i ] = (int)$salt[ $i ];
534 534
             }
535 535
         }
536
-        if ($personal instanceof SplFixedArray) {
536
+        if ( $personal instanceof SplFixedArray ) {
537 537
             // personal: [48] through [63]
538
-            for ($i = 0; $i < 16; ++$i) {
539
-                $p[48 + $i] = (int) $personal[$i];
538
+            for ( $i = 0; $i < 16; ++$i ) {
539
+                $p[ 48 + $i ] = (int)$personal[ $i ];
540 540
             }
541 541
         }
542 542
 
543
-        $ctx[0][0] = self::xor64(
544
-            $ctx[0][0],
545
-            self::load64($p, 0)
543
+        $ctx[ 0 ][ 0 ] = self::xor64(
544
+            $ctx[ 0 ][ 0 ],
545
+            self::load64( $p, 0 )
546 546
         );
547 547
 
548
-        if ($salt instanceof SplFixedArray || $personal instanceof SplFixedArray) {
548
+        if ( $salt instanceof SplFixedArray || $personal instanceof SplFixedArray ) {
549 549
             // We need to do what blake2b_init_param() does:
550
-            for ($i = 1; $i < 8; ++$i) {
551
-                $ctx[0][$i] = self::xor64(
552
-                    $ctx[0][$i],
553
-                    self::load64($p, $i << 3)
550
+            for ( $i = 1; $i < 8; ++$i ) {
551
+                $ctx[ 0 ][ $i ] = self::xor64(
552
+                    $ctx[ 0 ][ $i ],
553
+                    self::load64( $p, $i << 3 )
554 554
                 );
555 555
             }
556 556
         }
557 557
 
558
-        if ($klen > 0 && $key instanceof SplFixedArray) {
559
-            $block = new SplFixedArray(128);
560
-            for ($i = 128; $i--;) {
561
-                $block[$i] = 0;
558
+        if ( $klen > 0 && $key instanceof SplFixedArray ) {
559
+            $block = new SplFixedArray( 128 );
560
+            for ( $i = 128; $i--; ) {
561
+                $block[ $i ] = 0;
562 562
             }
563
-            for ($i = $klen; $i--;) {
564
-                $block[$i] = $key[$i];
563
+            for ( $i = $klen; $i--; ) {
564
+                $block[ $i ] = $key[ $i ];
565 565
             }
566
-            self::update($ctx, $block, 128);
567
-            $ctx[4] = 128;
566
+            self::update( $ctx, $block, 128 );
567
+            $ctx[ 4 ] = 128;
568 568
         }
569 569
 
570 570
         return $ctx;
@@ -579,10 +579,10 @@  discard block
 block discarded – undo
579 579
      * @return SplFixedArray
580 580
      * @psalm-suppress MixedArgumentTypeCoercion
581 581
      */
582
-    public static function stringToSplFixedArray($str = '')
582
+    public static function stringToSplFixedArray( $str = '' )
583 583
     {
584
-        $values = unpack('C*', $str);
585
-        return SplFixedArray::fromArray(array_values($values));
584
+        $values = unpack( 'C*', $str );
585
+        return SplFixedArray::fromArray( array_values( $values ) );
586 586
     }
587 587
 
588 588
     /**
@@ -593,15 +593,15 @@  discard block
 block discarded – undo
593 593
      * @param SplFixedArray $a
594 594
      * @return string
595 595
      */
596
-    public static function SplFixedArrayToString(SplFixedArray $a)
596
+    public static function SplFixedArrayToString( SplFixedArray $a )
597 597
     {
598 598
         /**
599 599
          * @var array<int, string|int>
600 600
          */
601 601
         $arr = $a->toArray();
602 602
         $c = $a->count();
603
-        array_unshift($arr, str_repeat('C', $c));
604
-        return (string) (call_user_func_array('pack', $arr));
603
+        array_unshift( $arr, str_repeat( 'C', $c ) );
604
+        return (string)( call_user_func_array( 'pack', $arr ) );
605 605
     }
606 606
 
607 607
     /**
@@ -615,48 +615,48 @@  discard block
 block discarded – undo
615 615
      * @psalm-suppress MixedArrayAssignment
616 616
      * @psalm-suppress MixedMethodCall
617 617
      */
618
-    public static function contextToString(SplFixedArray $ctx)
618
+    public static function contextToString( SplFixedArray $ctx )
619 619
     {
620 620
         $str = '';
621 621
         /** @var array<int, ParagonIE_Sodium_Core32_Int64> $ctxA */
622
-        $ctxA = $ctx[0]->toArray();
622
+        $ctxA = $ctx[ 0 ]->toArray();
623 623
 
624 624
         # uint64_t h[8];
625
-        for ($i = 0; $i < 8; ++$i) {
626
-            if (!($ctxA[$i] instanceof ParagonIE_Sodium_Core32_Int64)) {
627
-                throw new TypeError('Not an instance of Int64');
625
+        for ( $i = 0; $i < 8; ++$i ) {
626
+            if ( ! ( $ctxA[ $i ] instanceof ParagonIE_Sodium_Core32_Int64 ) ) {
627
+                throw new TypeError( 'Not an instance of Int64' );
628 628
             }
629 629
             /** @var ParagonIE_Sodium_Core32_Int64 $ctxAi */
630
-            $ctxAi = $ctxA[$i];
630
+            $ctxAi = $ctxA[ $i ];
631 631
             $str .= $ctxAi->toReverseString();
632 632
         }
633 633
 
634 634
         # uint64_t t[2];
635 635
         # uint64_t f[2];
636
-        for ($i = 1; $i < 3; ++$i) {
636
+        for ( $i = 1; $i < 3; ++$i ) {
637 637
             /** @var array<int, ParagonIE_Sodium_Core32_Int64> $ctxA */
638
-            $ctxA = $ctx[$i]->toArray();
638
+            $ctxA = $ctx[ $i ]->toArray();
639 639
             /** @var ParagonIE_Sodium_Core32_Int64 $ctxA1 */
640
-            $ctxA1 = $ctxA[0];
640
+            $ctxA1 = $ctxA[ 0 ];
641 641
             /** @var ParagonIE_Sodium_Core32_Int64 $ctxA2 */
642
-            $ctxA2 = $ctxA[1];
642
+            $ctxA2 = $ctxA[ 1 ];
643 643
 
644 644
             $str .= $ctxA1->toReverseString();
645 645
             $str .= $ctxA2->toReverseString();
646 646
         }
647 647
 
648 648
         # uint8_t buf[2 * 128];
649
-        $str .= self::SplFixedArrayToString($ctx[3]);
649
+        $str .= self::SplFixedArrayToString( $ctx[ 3 ] );
650 650
 
651 651
         /** @var int $ctx4 */
652
-        $ctx4 = $ctx[4];
652
+        $ctx4 = $ctx[ 4 ];
653 653
 
654 654
         # size_t buflen;
655
-        $str .= implode('', array(
656
-            self::intToChr($ctx4 & 0xff),
657
-            self::intToChr(($ctx4 >> 8) & 0xff),
658
-            self::intToChr(($ctx4 >> 16) & 0xff),
659
-            self::intToChr(($ctx4 >> 24) & 0xff),
655
+        $str .= implode( '', array(
656
+            self::intToChr( $ctx4 & 0xff ),
657
+            self::intToChr( ( $ctx4 >> 8 ) & 0xff ),
658
+            self::intToChr( ( $ctx4 >> 16 ) & 0xff ),
659
+            self::intToChr( ( $ctx4 >> 24 ) & 0xff ),
660 660
             "\x00\x00\x00\x00"
661 661
             /*
662 662
             self::intToChr(($ctx4 >> 32) & 0xff),
@@ -664,9 +664,9 @@  discard block
 block discarded – undo
664 664
             self::intToChr(($ctx4 >> 48) & 0xff),
665 665
             self::intToChr(($ctx4 >> 56) & 0xff)
666 666
             */
667
-        ));
667
+        ) );
668 668
         # uint8_t last_node;
669
-        return $str . self::intToChr($ctx[5]) . str_repeat("\x00", 23);
669
+        return $str . self::intToChr( $ctx[ 5 ] ) . str_repeat( "\x00", 23 );
670 670
     }
671 671
 
672 672
     /**
@@ -682,37 +682,37 @@  discard block
 block discarded – undo
682 682
      * @psalm-suppress MixedArrayAccess
683 683
      * @psalm-suppress MixedArrayAssignment
684 684
      */
685
-    public static function stringToContext($string)
685
+    public static function stringToContext( $string )
686 686
     {
687 687
         $ctx = self::context();
688 688
 
689 689
         # uint64_t h[8];
690
-        for ($i = 0; $i < 8; ++$i) {
691
-            $ctx[0][$i] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
692
-                self::substr($string, (($i << 3) + 0), 8)
690
+        for ( $i = 0; $i < 8; ++$i ) {
691
+            $ctx[ 0 ][ $i ] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
692
+                self::substr( $string, ( ( $i << 3 ) + 0 ), 8 )
693 693
             );
694 694
         }
695 695
 
696 696
         # uint64_t t[2];
697 697
         # uint64_t f[2];
698
-        for ($i = 1; $i < 3; ++$i) {
699
-            $ctx[$i][1] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
700
-                self::substr($string, 72 + (($i - 1) << 4), 8)
698
+        for ( $i = 1; $i < 3; ++$i ) {
699
+            $ctx[ $i ][ 1 ] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
700
+                self::substr( $string, 72 + ( ( $i - 1 ) << 4 ), 8 )
701 701
             );
702
-            $ctx[$i][0] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
703
-                self::substr($string, 64 + (($i - 1) << 4), 8)
702
+            $ctx[ $i ][ 0 ] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
703
+                self::substr( $string, 64 + ( ( $i - 1 ) << 4 ), 8 )
704 704
             );
705 705
         }
706 706
 
707 707
         # uint8_t buf[2 * 128];
708
-        $ctx[3] = self::stringToSplFixedArray(self::substr($string, 96, 256));
708
+        $ctx[ 3 ] = self::stringToSplFixedArray( self::substr( $string, 96, 256 ) );
709 709
 
710 710
         # uint8_t buf[2 * 128];
711 711
         $int = 0;
712
-        for ($i = 0; $i < 8; ++$i) {
713
-            $int |= self::chrToInt($string[352 + $i]) << ($i << 3);
712
+        for ( $i = 0; $i < 8; ++$i ) {
713
+            $int |= self::chrToInt( $string[ 352 + $i ] ) << ( $i << 3 );
714 714
         }
715
-        $ctx[4] = $int;
715
+        $ctx[ 4 ] = $int;
716 716
 
717 717
         return $ctx;
718 718
     }
Please login to merge, or discard this patch.
Braces   +20 added lines, -40 removed lines patch added patch discarded remove patch
@@ -9,8 +9,7 @@  discard block
 block discarded – undo
9 9
  *
10 10
  * Based on the work of Devi Mandiri in devi/salt.
11 11
  */
12
-abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Util
13
-{
12
+abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Util {
14 13
     /**
15 14
      * @var SplFixedArray
16 15
      */
@@ -49,8 +48,7 @@  discard block
 block discarded – undo
49 48
      * @throws SodiumException
50 49
      * @throws TypeError
51 50
      */
52
-    public static function new64($high, $low)
53
-    {
51
+    public static function new64($high, $low) {
54 52
         return ParagonIE_Sodium_Core32_Int64::fromInts($low, $high);
55 53
     }
56 54
 
@@ -65,8 +63,7 @@  discard block
 block discarded – undo
65 63
      * @throws SodiumException
66 64
      * @throws TypeError
67 65
      */
68
-    protected static function to64($num)
69
-    {
66
+    protected static function to64($num) {
70 67
         list($hi, $lo) = self::numericTo64BitInteger($num);
71 68
         return self::new64($hi, $lo);
72 69
     }
@@ -81,8 +78,7 @@  discard block
 block discarded – undo
81 78
      * @param ParagonIE_Sodium_Core32_Int64 $y
82 79
      * @return ParagonIE_Sodium_Core32_Int64
83 80
      */
84
-    protected static function add64($x, $y)
85
-    {
81
+    protected static function add64($x, $y) {
86 82
         return $x->addInt64($y);
87 83
     }
88 84
 
@@ -94,8 +90,7 @@  discard block
 block discarded – undo
94 90
      * @param ParagonIE_Sodium_Core32_Int64 $z
95 91
      * @return ParagonIE_Sodium_Core32_Int64
96 92
      */
97
-    public static function add364($x, $y, $z)
98
-    {
93
+    public static function add364($x, $y, $z) {
99 94
         return $x->addInt64($y)->addInt64($z);
100 95
     }
101 96
 
@@ -107,8 +102,7 @@  discard block
 block discarded – undo
107 102
      * @return ParagonIE_Sodium_Core32_Int64
108 103
      * @throws TypeError
109 104
      */
110
-    public static function xor64(ParagonIE_Sodium_Core32_Int64 $x, ParagonIE_Sodium_Core32_Int64 $y)
111
-    {
105
+    public static function xor64(ParagonIE_Sodium_Core32_Int64 $x, ParagonIE_Sodium_Core32_Int64 $y) {
112 106
         return $x->xorInt64($y);
113 107
     }
114 108
 
@@ -121,8 +115,7 @@  discard block
 block discarded – undo
121 115
      * @throws SodiumException
122 116
      * @throws TypeError
123 117
      */
124
-    public static function rotr64(ParagonIE_Sodium_Core32_Int64 $x, $c)
125
-    {
118
+    public static function rotr64(ParagonIE_Sodium_Core32_Int64 $x, $c) {
126 119
         return $x->rotateRight($c);
127 120
     }
128 121
 
@@ -135,8 +128,7 @@  discard block
 block discarded – undo
135 128
      * @throws SodiumException
136 129
      * @throws TypeError
137 130
      */
138
-    public static function load64($x, $i)
139
-    {
131
+    public static function load64($x, $i) {
140 132
         /** @var int $l */
141 133
         $l = (int) ($x[$i])
142 134
              | ((int) ($x[$i+1]) << 8)
@@ -164,8 +156,7 @@  discard block
 block discarded – undo
164 156
      * @psalm-suppress MixedArrayAssignment
165 157
      * @psalm-suppress MixedArrayOffset
166 158
      */
167
-    public static function store64(SplFixedArray $x, $i, ParagonIE_Sodium_Core32_Int64 $u)
168
-    {
159
+    public static function store64(SplFixedArray $x, $i, ParagonIE_Sodium_Core32_Int64 $u) {
169 160
         $v = clone $u;
170 161
         $maxLength = $x->getSize() - 1;
171 162
         for ($j = 0; $j < 8; ++$j) {
@@ -187,8 +178,7 @@  discard block
 block discarded – undo
187 178
      * @throws SodiumException
188 179
      * @throws TypeError
189 180
      */
190
-    public static function pseudoConstructor()
191
-    {
181
+    public static function pseudoConstructor() {
192 182
         static $called = false;
193 183
         if ($called) {
194 184
             return;
@@ -221,8 +211,7 @@  discard block
 block discarded – undo
221 211
      * @throws SodiumException
222 212
      * @throws TypeError
223 213
      */
224
-    protected static function context()
225
-    {
214
+    protected static function context() {
226 215
         $ctx    = new SplFixedArray(6);
227 216
         $ctx[0] = new SplFixedArray(8);   // h
228 217
         $ctx[1] = new SplFixedArray(2);   // t
@@ -260,8 +249,7 @@  discard block
 block discarded – undo
260 249
      * @psalm-suppress MixedArrayAssignment
261 250
      * @psalm-suppress MixedAssignment
262 251
      */
263
-    protected static function compress(SplFixedArray $ctx, SplFixedArray $buf)
264
-    {
252
+    protected static function compress(SplFixedArray $ctx, SplFixedArray $buf) {
265 253
         $m = new SplFixedArray(16);
266 254
         $v = new SplFixedArray(16);
267 255
 
@@ -318,8 +306,7 @@  discard block
 block discarded – undo
318 306
      * @psalm-suppress MixedArgument
319 307
      * @psalm-suppress MixedArrayOffset
320 308
      */
321
-    public static function G($r, $i, $a, $b, $c, $d, SplFixedArray $v, SplFixedArray $m)
322
-    {
309
+    public static function G($r, $i, $a, $b, $c, $d, SplFixedArray $v, SplFixedArray $m) {
323 310
         $v[$a] = self::add364($v[$a], $v[$b], $m[self::$sigma[$r][$i << 1]]);
324 311
         $v[$d] = self::rotr64(self::xor64($v[$d], $v[$a]), 32);
325 312
         $v[$c] = self::add64($v[$c], $v[$d]);
@@ -343,8 +330,7 @@  discard block
 block discarded – undo
343 330
      * @psalm-suppress MixedArrayAccess
344 331
      * @psalm-suppress MixedArrayAssignment
345 332
      */
346
-    public static function increment_counter($ctx, $inc)
347
-    {
333
+    public static function increment_counter($ctx, $inc) {
348 334
         if ($inc < 0) {
349 335
             throw new SodiumException('Increasing by a negative number makes no sense.');
350 336
         }
@@ -382,8 +368,7 @@  discard block
 block discarded – undo
382 368
      * @psalm-suppress MixedMethodCall
383 369
      * @psalm-suppress MixedOperand
384 370
      */
385
-    public static function update(SplFixedArray $ctx, SplFixedArray $p, $plen)
386
-    {
371
+    public static function update(SplFixedArray $ctx, SplFixedArray $p, $plen) {
387 372
         self::pseudoConstructor();
388 373
 
389 374
         $offset = 0;
@@ -446,8 +431,7 @@  discard block
 block discarded – undo
446 431
      * @psalm-suppress MixedMethodCall
447 432
      * @psalm-suppress MixedOperand
448 433
      */
449
-    public static function finish(SplFixedArray $ctx, SplFixedArray $out)
450
-    {
434
+    public static function finish(SplFixedArray $ctx, SplFixedArray $out) {
451 435
         self::pseudoConstructor();
452 436
         if ($ctx[4] > 128) {
453 437
             self::increment_counter($ctx, 128);
@@ -579,8 +563,7 @@  discard block
 block discarded – undo
579 563
      * @return SplFixedArray
580 564
      * @psalm-suppress MixedArgumentTypeCoercion
581 565
      */
582
-    public static function stringToSplFixedArray($str = '')
583
-    {
566
+    public static function stringToSplFixedArray($str = '') {
584 567
         $values = unpack('C*', $str);
585 568
         return SplFixedArray::fromArray(array_values($values));
586 569
     }
@@ -593,8 +576,7 @@  discard block
 block discarded – undo
593 576
      * @param SplFixedArray $a
594 577
      * @return string
595 578
      */
596
-    public static function SplFixedArrayToString(SplFixedArray $a)
597
-    {
579
+    public static function SplFixedArrayToString(SplFixedArray $a) {
598 580
         /**
599 581
          * @var array<int, string|int>
600 582
          */
@@ -615,8 +597,7 @@  discard block
 block discarded – undo
615 597
      * @psalm-suppress MixedArrayAssignment
616 598
      * @psalm-suppress MixedMethodCall
617 599
      */
618
-    public static function contextToString(SplFixedArray $ctx)
619
-    {
600
+    public static function contextToString(SplFixedArray $ctx) {
620 601
         $str = '';
621 602
         /** @var array<int, ParagonIE_Sodium_Core32_Int64> $ctxA */
622 603
         $ctxA = $ctx[0]->toArray();
@@ -682,8 +663,7 @@  discard block
 block discarded – undo
682 663
      * @psalm-suppress MixedArrayAccess
683 664
      * @psalm-suppress MixedArrayAssignment
684 665
      */
685
-    public static function stringToContext($string)
686
-    {
666
+    public static function stringToContext($string) {
687 667
         $ctx = self::context();
688 668
 
689 669
         # uint64_t h[8];
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/Ed25519.php 3 patches
Braces   +14 added lines, -28 removed lines patch added patch discarded remove patch
@@ -7,8 +7,7 @@  discard block
 block discarded – undo
7 7
 /**
8 8
  * Class ParagonIE_Sodium_Core32_Ed25519
9 9
  */
10
-abstract class ParagonIE_Sodium_Core32_Ed25519 extends ParagonIE_Sodium_Core32_Curve25519
11
-{
10
+abstract class ParagonIE_Sodium_Core32_Ed25519 extends ParagonIE_Sodium_Core32_Curve25519 {
12 11
     const KEYPAIR_BYTES = 96;
13 12
     const SEED_BYTES = 32;
14 13
 
@@ -20,8 +19,7 @@  discard block
 block discarded – undo
20 19
      * @throws SodiumException
21 20
      * @throws TypeError
22 21
      */
23
-    public static function keypair()
24
-    {
22
+    public static function keypair() {
25 23
         $seed = random_bytes(self::SEED_BYTES);
26 24
         $pk = '';
27 25
         $sk = '';
@@ -39,8 +37,7 @@  discard block
 block discarded – undo
39 37
      * @throws SodiumException
40 38
      * @throws TypeError
41 39
      */
42
-    public static function seed_keypair(&$pk, &$sk, $seed)
43
-    {
40
+    public static function seed_keypair(&$pk, &$sk, $seed) {
44 41
         if (self::strlen($seed) !== self::SEED_BYTES) {
45 42
             throw new RangeException('crypto_sign keypair seed must be 32 bytes long');
46 43
         }
@@ -58,8 +55,7 @@  discard block
 block discarded – undo
58 55
      * @return string
59 56
      * @throws TypeError
60 57
      */
61
-    public static function secretkey($keypair)
62
-    {
58
+    public static function secretkey($keypair) {
63 59
         if (self::strlen($keypair) !== self::KEYPAIR_BYTES) {
64 60
             throw new RangeException('crypto_sign keypair must be 96 bytes long');
65 61
         }
@@ -74,8 +70,7 @@  discard block
 block discarded – undo
74 70
      * @throws RangeException
75 71
      * @throws TypeError
76 72
      */
77
-    public static function publickey($keypair)
78
-    {
73
+    public static function publickey($keypair) {
79 74
         if (self::strlen($keypair) !== self::KEYPAIR_BYTES) {
80 75
             throw new RangeException('crypto_sign keypair must be 96 bytes long');
81 76
         }
@@ -90,8 +85,7 @@  discard block
 block discarded – undo
90 85
      * @throws SodiumException
91 86
      * @throws TypeError
92 87
      */
93
-    public static function publickey_from_secretkey($sk)
94
-    {
88
+    public static function publickey_from_secretkey($sk) {
95 89
         /** @var string $sk */
96 90
         $sk = hash('sha512', self::substr($sk, 0, 32), true);
97 91
         $sk[0] = self::intToChr(
@@ -109,8 +103,7 @@  discard block
 block discarded – undo
109 103
      * @throws SodiumException
110 104
      * @throws TypeError
111 105
      */
112
-    public static function pk_to_curve25519($pk)
113
-    {
106
+    public static function pk_to_curve25519($pk) {
114 107
         if (self::small_order($pk)) {
115 108
             throw new SodiumException('Public key is on a small order');
116 109
         }
@@ -151,8 +144,7 @@  discard block
 block discarded – undo
151 144
      * @throws SodiumException
152 145
      * @throws TypeError
153 146
      */
154
-    public static function sk_to_pk($sk)
155
-    {
147
+    public static function sk_to_pk($sk) {
156 148
         return self::ge_p3_tobytes(
157 149
             self::ge_scalarmult_base(
158 150
                 self::substr($sk, 0, 32)
@@ -169,8 +161,7 @@  discard block
 block discarded – undo
169 161
      * @throws SodiumException
170 162
      * @throws TypeError
171 163
      */
172
-    public static function sign($message, $sk)
173
-    {
164
+    public static function sign($message, $sk) {
174 165
         /** @var string $signature */
175 166
         $signature = self::sign_detached($message, $sk);
176 167
         return $signature . $message;
@@ -185,8 +176,7 @@  discard block
 block discarded – undo
185 176
      * @throws SodiumException
186 177
      * @throws TypeError
187 178
      */
188
-    public static function sign_open($message, $pk)
189
-    {
179
+    public static function sign_open($message, $pk) {
190 180
         /** @var string $signature */
191 181
         $signature = self::substr($message, 0, 64);
192 182
 
@@ -209,8 +199,7 @@  discard block
 block discarded – undo
209 199
      * @throws TypeError
210 200
      * @psalm-suppress PossiblyInvalidArgument
211 201
      */
212
-    public static function sign_detached($message, $sk)
213
-    {
202
+    public static function sign_detached($message, $sk) {
214 203
         # crypto_hash_sha512(az, sk, 32);
215 204
         $az =  hash('sha512', self::substr($sk, 0, 32), true);
216 205
 
@@ -274,8 +263,7 @@  discard block
 block discarded – undo
274 263
      * @throws SodiumException
275 264
      * @throws TypeError
276 265
      */
277
-    public static function verify_detached($sig, $message, $pk)
278
-    {
266
+    public static function verify_detached($sig, $message, $pk) {
279 267
         if (self::strlen($sig) < 64) {
280 268
             throw new SodiumException('Signature is too short');
281 269
         }
@@ -341,8 +329,7 @@  discard block
 block discarded – undo
341 329
      * @throws SodiumException
342 330
      * @throws TypeError
343 331
      */
344
-    public static function check_S_lt_L($S)
345
-    {
332
+    public static function check_S_lt_L($S) {
346 333
         if (self::strlen($S) < 32) {
347 334
             throw new SodiumException('Signature must be 32 bytes');
348 335
         }
@@ -377,8 +364,7 @@  discard block
 block discarded – undo
377 364
      * @throws SodiumException
378 365
      * @throws TypeError
379 366
      */
380
-    public static function small_order($R)
381
-    {
367
+    public static function small_order($R) {
382 368
         static $blocklist = array(
383 369
             /* 0 (order 4) */
384 370
             array(
Please login to merge, or discard this patch.
Indentation   +472 added lines, -472 removed lines patch added patch discarded remove patch
@@ -1,10 +1,10 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core32_Ed25519', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 if (!class_exists('ParagonIE_Sodium_Core32_Curve25519')) {
7
-    require_once dirname(__FILE__) . '/Curve25519.php';
7
+	require_once dirname(__FILE__) . '/Curve25519.php';
8 8
 }
9 9
 
10 10
 /**
@@ -12,474 +12,474 @@  discard block
 block discarded – undo
12 12
  */
13 13
 abstract class ParagonIE_Sodium_Core32_Ed25519 extends ParagonIE_Sodium_Core32_Curve25519
14 14
 {
15
-    const KEYPAIR_BYTES = 96;
16
-    const SEED_BYTES = 32;
17
-
18
-    /**
19
-     * @internal You should not use this directly from another application
20
-     *
21
-     * @return string (96 bytes)
22
-     * @throws Exception
23
-     * @throws SodiumException
24
-     * @throws TypeError
25
-     */
26
-    public static function keypair()
27
-    {
28
-        $seed = random_bytes(self::SEED_BYTES);
29
-        $pk = '';
30
-        $sk = '';
31
-        self::seed_keypair($pk, $sk, $seed);
32
-        return $sk . $pk;
33
-    }
34
-
35
-    /**
36
-     * @internal You should not use this directly from another application
37
-     *
38
-     * @param string $pk
39
-     * @param string $sk
40
-     * @param string $seed
41
-     * @return string
42
-     * @throws SodiumException
43
-     * @throws TypeError
44
-     */
45
-    public static function seed_keypair(&$pk, &$sk, $seed)
46
-    {
47
-        if (self::strlen($seed) !== self::SEED_BYTES) {
48
-            throw new RangeException('crypto_sign keypair seed must be 32 bytes long');
49
-        }
50
-
51
-        /** @var string $pk */
52
-        $pk = self::publickey_from_secretkey($seed);
53
-        $sk = $seed . $pk;
54
-        return $sk;
55
-    }
56
-
57
-    /**
58
-     * @internal You should not use this directly from another application
59
-     *
60
-     * @param string $keypair
61
-     * @return string
62
-     * @throws TypeError
63
-     */
64
-    public static function secretkey($keypair)
65
-    {
66
-        if (self::strlen($keypair) !== self::KEYPAIR_BYTES) {
67
-            throw new RangeException('crypto_sign keypair must be 96 bytes long');
68
-        }
69
-        return self::substr($keypair, 0, 64);
70
-    }
71
-
72
-    /**
73
-     * @internal You should not use this directly from another application
74
-     *
75
-     * @param string $keypair
76
-     * @return string
77
-     * @throws RangeException
78
-     * @throws TypeError
79
-     */
80
-    public static function publickey($keypair)
81
-    {
82
-        if (self::strlen($keypair) !== self::KEYPAIR_BYTES) {
83
-            throw new RangeException('crypto_sign keypair must be 96 bytes long');
84
-        }
85
-        return self::substr($keypair, 64, 32);
86
-    }
87
-
88
-    /**
89
-     * @internal You should not use this directly from another application
90
-     *
91
-     * @param string $sk
92
-     * @return string
93
-     * @throws SodiumException
94
-     * @throws TypeError
95
-     */
96
-    public static function publickey_from_secretkey($sk)
97
-    {
98
-        /** @var string $sk */
99
-        $sk = hash('sha512', self::substr($sk, 0, 32), true);
100
-        $sk[0] = self::intToChr(
101
-            self::chrToInt($sk[0]) & 248
102
-        );
103
-        $sk[31] = self::intToChr(
104
-            (self::chrToInt($sk[31]) & 63) | 64
105
-        );
106
-        return self::sk_to_pk($sk);
107
-    }
108
-
109
-    /**
110
-     * @param string $pk
111
-     * @return string
112
-     * @throws SodiumException
113
-     * @throws TypeError
114
-     */
115
-    public static function pk_to_curve25519($pk)
116
-    {
117
-        if (self::small_order($pk)) {
118
-            throw new SodiumException('Public key is on a small order');
119
-        }
120
-        $A = self::ge_frombytes_negate_vartime($pk);
121
-        $p1 = self::ge_mul_l($A);
122
-        if (!self::fe_isnonzero($p1->X)) {
123
-            throw new SodiumException('Unexpected zero result');
124
-        }
125
-
126
-        # fe_1(one_minus_y);
127
-        # fe_sub(one_minus_y, one_minus_y, A.Y);
128
-        # fe_invert(one_minus_y, one_minus_y);
129
-        $one_minux_y = self::fe_invert(
130
-            self::fe_sub(
131
-                self::fe_1(),
132
-                $A->Y
133
-            )
134
-        );
135
-
136
-
137
-        # fe_1(x);
138
-        # fe_add(x, x, A.Y);
139
-        # fe_mul(x, x, one_minus_y);
140
-        $x = self::fe_mul(
141
-            self::fe_add(self::fe_1(), $A->Y),
142
-            $one_minux_y
143
-        );
144
-
145
-        # fe_tobytes(curve25519_pk, x);
146
-        return self::fe_tobytes($x);
147
-    }
148
-
149
-    /**
150
-     * @internal You should not use this directly from another application
151
-     *
152
-     * @param string $sk
153
-     * @return string
154
-     * @throws SodiumException
155
-     * @throws TypeError
156
-     */
157
-    public static function sk_to_pk($sk)
158
-    {
159
-        return self::ge_p3_tobytes(
160
-            self::ge_scalarmult_base(
161
-                self::substr($sk, 0, 32)
162
-            )
163
-        );
164
-    }
165
-
166
-    /**
167
-     * @internal You should not use this directly from another application
168
-     *
169
-     * @param string $message
170
-     * @param string $sk
171
-     * @return string
172
-     * @throws SodiumException
173
-     * @throws TypeError
174
-     */
175
-    public static function sign($message, $sk)
176
-    {
177
-        /** @var string $signature */
178
-        $signature = self::sign_detached($message, $sk);
179
-        return $signature . $message;
180
-    }
181
-
182
-    /**
183
-     * @internal You should not use this directly from another application
184
-     *
185
-     * @param string $message A signed message
186
-     * @param string $pk      Public key
187
-     * @return string         Message (without signature)
188
-     * @throws SodiumException
189
-     * @throws TypeError
190
-     */
191
-    public static function sign_open($message, $pk)
192
-    {
193
-        /** @var string $signature */
194
-        $signature = self::substr($message, 0, 64);
195
-
196
-        /** @var string $message */
197
-        $message = self::substr($message, 64);
198
-
199
-        if (self::verify_detached($signature, $message, $pk)) {
200
-            return $message;
201
-        }
202
-        throw new SodiumException('Invalid signature');
203
-    }
204
-
205
-    /**
206
-     * @internal You should not use this directly from another application
207
-     *
208
-     * @param string $message
209
-     * @param string $sk
210
-     * @return string
211
-     * @throws SodiumException
212
-     * @throws TypeError
213
-     * @psalm-suppress PossiblyInvalidArgument
214
-     */
215
-    public static function sign_detached($message, $sk)
216
-    {
217
-        # crypto_hash_sha512(az, sk, 32);
218
-        $az =  hash('sha512', self::substr($sk, 0, 32), true);
219
-
220
-        # az[0] &= 248;
221
-        # az[31] &= 63;
222
-        # az[31] |= 64;
223
-        $az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
224
-        $az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);
225
-
226
-        # crypto_hash_sha512_init(&hs);
227
-        # crypto_hash_sha512_update(&hs, az + 32, 32);
228
-        # crypto_hash_sha512_update(&hs, m, mlen);
229
-        # crypto_hash_sha512_final(&hs, nonce);
230
-        $hs = hash_init('sha512');
231
-        self::hash_update($hs, self::substr($az, 32, 32));
232
-        self::hash_update($hs, $message);
233
-        $nonceHash = hash_final($hs, true);
234
-
235
-        # memmove(sig + 32, sk + 32, 32);
236
-        $pk = self::substr($sk, 32, 32);
237
-
238
-        # sc_reduce(nonce);
239
-        # ge_scalarmult_base(&R, nonce);
240
-        # ge_p3_tobytes(sig, &R);
241
-        $nonce = self::sc_reduce($nonceHash) . self::substr($nonceHash, 32);
242
-        $sig = self::ge_p3_tobytes(
243
-            self::ge_scalarmult_base($nonce)
244
-        );
245
-
246
-        # crypto_hash_sha512_init(&hs);
247
-        # crypto_hash_sha512_update(&hs, sig, 64);
248
-        # crypto_hash_sha512_update(&hs, m, mlen);
249
-        # crypto_hash_sha512_final(&hs, hram);
250
-        $hs = hash_init('sha512');
251
-        self::hash_update($hs, self::substr($sig, 0, 32));
252
-        self::hash_update($hs, self::substr($pk, 0, 32));
253
-        self::hash_update($hs, $message);
254
-        $hramHash = hash_final($hs, true);
255
-
256
-        # sc_reduce(hram);
257
-        # sc_muladd(sig + 32, hram, az, nonce);
258
-        $hram = self::sc_reduce($hramHash);
259
-        $sigAfter = self::sc_muladd($hram, $az, $nonce);
260
-        $sig = self::substr($sig, 0, 32) . self::substr($sigAfter, 0, 32);
261
-
262
-        try {
263
-            ParagonIE_Sodium_Compat::memzero($az);
264
-        } catch (SodiumException $ex) {
265
-            $az = null;
266
-        }
267
-        return $sig;
268
-    }
269
-
270
-    /**
271
-     * @internal You should not use this directly from another application
272
-     *
273
-     * @param string $sig
274
-     * @param string $message
275
-     * @param string $pk
276
-     * @return bool
277
-     * @throws SodiumException
278
-     * @throws TypeError
279
-     */
280
-    public static function verify_detached($sig, $message, $pk)
281
-    {
282
-        if (self::strlen($sig) < 64) {
283
-            throw new SodiumException('Signature is too short');
284
-        }
285
-        if ((self::chrToInt($sig[63]) & 240) && self::check_S_lt_L(self::substr($sig, 32, 32))) {
286
-            throw new SodiumException('S < L - Invalid signature');
287
-        }
288
-        if (self::small_order($sig)) {
289
-            throw new SodiumException('Signature is on too small of an order');
290
-        }
291
-        if ((self::chrToInt($sig[63]) & 224) !== 0) {
292
-            throw new SodiumException('Invalid signature');
293
-        }
294
-        $d = 0;
295
-        for ($i = 0; $i < 32; ++$i) {
296
-            $d |= self::chrToInt($pk[$i]);
297
-        }
298
-        if ($d === 0) {
299
-            throw new SodiumException('All zero public key');
300
-        }
301
-
302
-        /** @var bool The original value of ParagonIE_Sodium_Compat::$fastMult */
303
-        $orig = ParagonIE_Sodium_Compat::$fastMult;
304
-
305
-        // Set ParagonIE_Sodium_Compat::$fastMult to true to speed up verification.
306
-        ParagonIE_Sodium_Compat::$fastMult = true;
307
-
308
-        /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A */
309
-        $A = self::ge_frombytes_negate_vartime($pk);
310
-
311
-        /** @var string $hDigest */
312
-        $hDigest = hash(
313
-            'sha512',
314
-            self::substr($sig, 0, 32) .
315
-            self::substr($pk, 0, 32) .
316
-            $message,
317
-            true
318
-        );
319
-
320
-        /** @var string $h */
321
-        $h = self::sc_reduce($hDigest) . self::substr($hDigest, 32);
322
-
323
-        /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $R */
324
-        $R = self::ge_double_scalarmult_vartime(
325
-            $h,
326
-            $A,
327
-            self::substr($sig, 32)
328
-        );
329
-
330
-        /** @var string $rcheck */
331
-        $rcheck = self::ge_tobytes($R);
332
-
333
-        // Reset ParagonIE_Sodium_Compat::$fastMult to what it was before.
334
-        ParagonIE_Sodium_Compat::$fastMult = $orig;
335
-
336
-        return self::verify_32($rcheck, self::substr($sig, 0, 32));
337
-    }
338
-
339
-    /**
340
-     * @internal You should not use this directly from another application
341
-     *
342
-     * @param string $S
343
-     * @return bool
344
-     * @throws SodiumException
345
-     * @throws TypeError
346
-     */
347
-    public static function check_S_lt_L($S)
348
-    {
349
-        if (self::strlen($S) < 32) {
350
-            throw new SodiumException('Signature must be 32 bytes');
351
-        }
352
-        static $L = array(
353
-            0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58,
354
-            0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14,
355
-            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
356
-            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10
357
-        );
358
-        /** @var array<int, int> $L */
359
-        $c = 0;
360
-        $n = 1;
361
-        $i = 32;
362
-
363
-        do {
364
-            --$i;
365
-            $x = self::chrToInt($S[$i]);
366
-            $c |= (
367
-                (($x - $L[$i]) >> 8) & $n
368
-            );
369
-            $n &= (
370
-                (($x ^ $L[$i]) - 1) >> 8
371
-            );
372
-        } while ($i !== 0);
373
-
374
-        return $c === 0;
375
-    }
376
-
377
-    /**
378
-     * @param string $R
379
-     * @return bool
380
-     * @throws SodiumException
381
-     * @throws TypeError
382
-     */
383
-    public static function small_order($R)
384
-    {
385
-        static $blocklist = array(
386
-            /* 0 (order 4) */
387
-            array(
388
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
389
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
390
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
391
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
392
-            ),
393
-            /* 1 (order 1) */
394
-            array(
395
-                0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
396
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
397
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
398
-                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
399
-            ),
400
-            /* 2707385501144840649318225287225658788936804267575313519463743609750303402022 (order 8) */
401
-            array(
402
-                0x26, 0xe8, 0x95, 0x8f, 0xc2, 0xb2, 0x27, 0xb0,
403
-                0x45, 0xc3, 0xf4, 0x89, 0xf2, 0xef, 0x98, 0xf0,
404
-                0xd5, 0xdf, 0xac, 0x05, 0xd3, 0xc6, 0x33, 0x39,
405
-                0xb1, 0x38, 0x02, 0x88, 0x6d, 0x53, 0xfc, 0x05
406
-            ),
407
-            /* 55188659117513257062467267217118295137698188065244968500265048394206261417927 (order 8) */
408
-            array(
409
-                0xc7, 0x17, 0x6a, 0x70, 0x3d, 0x4d, 0xd8, 0x4f,
410
-                0xba, 0x3c, 0x0b, 0x76, 0x0d, 0x10, 0x67, 0x0f,
411
-                0x2a, 0x20, 0x53, 0xfa, 0x2c, 0x39, 0xcc, 0xc6,
412
-                0x4e, 0xc7, 0xfd, 0x77, 0x92, 0xac, 0x03, 0x7a
413
-            ),
414
-            /* p-1 (order 2) */
415
-            array(
416
-                0x13, 0xe8, 0x95, 0x8f, 0xc2, 0xb2, 0x27, 0xb0,
417
-                0x45, 0xc3, 0xf4, 0x89, 0xf2, 0xef, 0x98, 0xf0,
418
-                0xd5, 0xdf, 0xac, 0x05, 0xd3, 0xc6, 0x33, 0x39,
419
-                0xb1, 0x38, 0x02, 0x88, 0x6d, 0x53, 0xfc, 0x85
420
-            ),
421
-            /* p (order 4) */
422
-            array(
423
-                0xb4, 0x17, 0x6a, 0x70, 0x3d, 0x4d, 0xd8, 0x4f,
424
-                0xba, 0x3c, 0x0b, 0x76, 0x0d, 0x10, 0x67, 0x0f,
425
-                0x2a, 0x20, 0x53, 0xfa, 0x2c, 0x39, 0xcc, 0xc6,
426
-                0x4e, 0xc7, 0xfd, 0x77, 0x92, 0xac, 0x03, 0xfa
427
-            ),
428
-            /* p+1 (order 1) */
429
-            array(
430
-                0xec, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
431
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
432
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
433
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
434
-            ),
435
-            /* p+2707385501144840649318225287225658788936804267575313519463743609750303402022 (order 8) */
436
-            array(
437
-                0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
438
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
439
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
440
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
441
-            ),
442
-            /* p+55188659117513257062467267217118295137698188065244968500265048394206261417927 (order 8) */
443
-            array(
444
-                0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
445
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
446
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
447
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
448
-            ),
449
-            /* 2p-1 (order 2) */
450
-            array(
451
-                0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
452
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
453
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
454
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
455
-            ),
456
-            /* 2p (order 4) */
457
-            array(
458
-                0xda, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
459
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
460
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
461
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
462
-            ),
463
-            /* 2p+1 (order 1) */
464
-            array(
465
-                0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
466
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
467
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
468
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
469
-            )
470
-        );
471
-        /** @var array<int, array<int, int>> $blocklist */
472
-        $countBlocklist = count($blocklist);
473
-
474
-        for ($i = 0; $i < $countBlocklist; ++$i) {
475
-            $c = 0;
476
-            for ($j = 0; $j < 32; ++$j) {
477
-                $c |= self::chrToInt($R[$j]) ^ $blocklist[$i][$j];
478
-            }
479
-            if ($c === 0) {
480
-                return true;
481
-            }
482
-        }
483
-        return false;
484
-    }
15
+	const KEYPAIR_BYTES = 96;
16
+	const SEED_BYTES = 32;
17
+
18
+	/**
19
+	 * @internal You should not use this directly from another application
20
+	 *
21
+	 * @return string (96 bytes)
22
+	 * @throws Exception
23
+	 * @throws SodiumException
24
+	 * @throws TypeError
25
+	 */
26
+	public static function keypair()
27
+	{
28
+		$seed = random_bytes(self::SEED_BYTES);
29
+		$pk = '';
30
+		$sk = '';
31
+		self::seed_keypair($pk, $sk, $seed);
32
+		return $sk . $pk;
33
+	}
34
+
35
+	/**
36
+	 * @internal You should not use this directly from another application
37
+	 *
38
+	 * @param string $pk
39
+	 * @param string $sk
40
+	 * @param string $seed
41
+	 * @return string
42
+	 * @throws SodiumException
43
+	 * @throws TypeError
44
+	 */
45
+	public static function seed_keypair(&$pk, &$sk, $seed)
46
+	{
47
+		if (self::strlen($seed) !== self::SEED_BYTES) {
48
+			throw new RangeException('crypto_sign keypair seed must be 32 bytes long');
49
+		}
50
+
51
+		/** @var string $pk */
52
+		$pk = self::publickey_from_secretkey($seed);
53
+		$sk = $seed . $pk;
54
+		return $sk;
55
+	}
56
+
57
+	/**
58
+	 * @internal You should not use this directly from another application
59
+	 *
60
+	 * @param string $keypair
61
+	 * @return string
62
+	 * @throws TypeError
63
+	 */
64
+	public static function secretkey($keypair)
65
+	{
66
+		if (self::strlen($keypair) !== self::KEYPAIR_BYTES) {
67
+			throw new RangeException('crypto_sign keypair must be 96 bytes long');
68
+		}
69
+		return self::substr($keypair, 0, 64);
70
+	}
71
+
72
+	/**
73
+	 * @internal You should not use this directly from another application
74
+	 *
75
+	 * @param string $keypair
76
+	 * @return string
77
+	 * @throws RangeException
78
+	 * @throws TypeError
79
+	 */
80
+	public static function publickey($keypair)
81
+	{
82
+		if (self::strlen($keypair) !== self::KEYPAIR_BYTES) {
83
+			throw new RangeException('crypto_sign keypair must be 96 bytes long');
84
+		}
85
+		return self::substr($keypair, 64, 32);
86
+	}
87
+
88
+	/**
89
+	 * @internal You should not use this directly from another application
90
+	 *
91
+	 * @param string $sk
92
+	 * @return string
93
+	 * @throws SodiumException
94
+	 * @throws TypeError
95
+	 */
96
+	public static function publickey_from_secretkey($sk)
97
+	{
98
+		/** @var string $sk */
99
+		$sk = hash('sha512', self::substr($sk, 0, 32), true);
100
+		$sk[0] = self::intToChr(
101
+			self::chrToInt($sk[0]) & 248
102
+		);
103
+		$sk[31] = self::intToChr(
104
+			(self::chrToInt($sk[31]) & 63) | 64
105
+		);
106
+		return self::sk_to_pk($sk);
107
+	}
108
+
109
+	/**
110
+	 * @param string $pk
111
+	 * @return string
112
+	 * @throws SodiumException
113
+	 * @throws TypeError
114
+	 */
115
+	public static function pk_to_curve25519($pk)
116
+	{
117
+		if (self::small_order($pk)) {
118
+			throw new SodiumException('Public key is on a small order');
119
+		}
120
+		$A = self::ge_frombytes_negate_vartime($pk);
121
+		$p1 = self::ge_mul_l($A);
122
+		if (!self::fe_isnonzero($p1->X)) {
123
+			throw new SodiumException('Unexpected zero result');
124
+		}
125
+
126
+		# fe_1(one_minus_y);
127
+		# fe_sub(one_minus_y, one_minus_y, A.Y);
128
+		# fe_invert(one_minus_y, one_minus_y);
129
+		$one_minux_y = self::fe_invert(
130
+			self::fe_sub(
131
+				self::fe_1(),
132
+				$A->Y
133
+			)
134
+		);
135
+
136
+
137
+		# fe_1(x);
138
+		# fe_add(x, x, A.Y);
139
+		# fe_mul(x, x, one_minus_y);
140
+		$x = self::fe_mul(
141
+			self::fe_add(self::fe_1(), $A->Y),
142
+			$one_minux_y
143
+		);
144
+
145
+		# fe_tobytes(curve25519_pk, x);
146
+		return self::fe_tobytes($x);
147
+	}
148
+
149
+	/**
150
+	 * @internal You should not use this directly from another application
151
+	 *
152
+	 * @param string $sk
153
+	 * @return string
154
+	 * @throws SodiumException
155
+	 * @throws TypeError
156
+	 */
157
+	public static function sk_to_pk($sk)
158
+	{
159
+		return self::ge_p3_tobytes(
160
+			self::ge_scalarmult_base(
161
+				self::substr($sk, 0, 32)
162
+			)
163
+		);
164
+	}
165
+
166
+	/**
167
+	 * @internal You should not use this directly from another application
168
+	 *
169
+	 * @param string $message
170
+	 * @param string $sk
171
+	 * @return string
172
+	 * @throws SodiumException
173
+	 * @throws TypeError
174
+	 */
175
+	public static function sign($message, $sk)
176
+	{
177
+		/** @var string $signature */
178
+		$signature = self::sign_detached($message, $sk);
179
+		return $signature . $message;
180
+	}
181
+
182
+	/**
183
+	 * @internal You should not use this directly from another application
184
+	 *
185
+	 * @param string $message A signed message
186
+	 * @param string $pk      Public key
187
+	 * @return string         Message (without signature)
188
+	 * @throws SodiumException
189
+	 * @throws TypeError
190
+	 */
191
+	public static function sign_open($message, $pk)
192
+	{
193
+		/** @var string $signature */
194
+		$signature = self::substr($message, 0, 64);
195
+
196
+		/** @var string $message */
197
+		$message = self::substr($message, 64);
198
+
199
+		if (self::verify_detached($signature, $message, $pk)) {
200
+			return $message;
201
+		}
202
+		throw new SodiumException('Invalid signature');
203
+	}
204
+
205
+	/**
206
+	 * @internal You should not use this directly from another application
207
+	 *
208
+	 * @param string $message
209
+	 * @param string $sk
210
+	 * @return string
211
+	 * @throws SodiumException
212
+	 * @throws TypeError
213
+	 * @psalm-suppress PossiblyInvalidArgument
214
+	 */
215
+	public static function sign_detached($message, $sk)
216
+	{
217
+		# crypto_hash_sha512(az, sk, 32);
218
+		$az =  hash('sha512', self::substr($sk, 0, 32), true);
219
+
220
+		# az[0] &= 248;
221
+		# az[31] &= 63;
222
+		# az[31] |= 64;
223
+		$az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
224
+		$az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);
225
+
226
+		# crypto_hash_sha512_init(&hs);
227
+		# crypto_hash_sha512_update(&hs, az + 32, 32);
228
+		# crypto_hash_sha512_update(&hs, m, mlen);
229
+		# crypto_hash_sha512_final(&hs, nonce);
230
+		$hs = hash_init('sha512');
231
+		self::hash_update($hs, self::substr($az, 32, 32));
232
+		self::hash_update($hs, $message);
233
+		$nonceHash = hash_final($hs, true);
234
+
235
+		# memmove(sig + 32, sk + 32, 32);
236
+		$pk = self::substr($sk, 32, 32);
237
+
238
+		# sc_reduce(nonce);
239
+		# ge_scalarmult_base(&R, nonce);
240
+		# ge_p3_tobytes(sig, &R);
241
+		$nonce = self::sc_reduce($nonceHash) . self::substr($nonceHash, 32);
242
+		$sig = self::ge_p3_tobytes(
243
+			self::ge_scalarmult_base($nonce)
244
+		);
245
+
246
+		# crypto_hash_sha512_init(&hs);
247
+		# crypto_hash_sha512_update(&hs, sig, 64);
248
+		# crypto_hash_sha512_update(&hs, m, mlen);
249
+		# crypto_hash_sha512_final(&hs, hram);
250
+		$hs = hash_init('sha512');
251
+		self::hash_update($hs, self::substr($sig, 0, 32));
252
+		self::hash_update($hs, self::substr($pk, 0, 32));
253
+		self::hash_update($hs, $message);
254
+		$hramHash = hash_final($hs, true);
255
+
256
+		# sc_reduce(hram);
257
+		# sc_muladd(sig + 32, hram, az, nonce);
258
+		$hram = self::sc_reduce($hramHash);
259
+		$sigAfter = self::sc_muladd($hram, $az, $nonce);
260
+		$sig = self::substr($sig, 0, 32) . self::substr($sigAfter, 0, 32);
261
+
262
+		try {
263
+			ParagonIE_Sodium_Compat::memzero($az);
264
+		} catch (SodiumException $ex) {
265
+			$az = null;
266
+		}
267
+		return $sig;
268
+	}
269
+
270
+	/**
271
+	 * @internal You should not use this directly from another application
272
+	 *
273
+	 * @param string $sig
274
+	 * @param string $message
275
+	 * @param string $pk
276
+	 * @return bool
277
+	 * @throws SodiumException
278
+	 * @throws TypeError
279
+	 */
280
+	public static function verify_detached($sig, $message, $pk)
281
+	{
282
+		if (self::strlen($sig) < 64) {
283
+			throw new SodiumException('Signature is too short');
284
+		}
285
+		if ((self::chrToInt($sig[63]) & 240) && self::check_S_lt_L(self::substr($sig, 32, 32))) {
286
+			throw new SodiumException('S < L - Invalid signature');
287
+		}
288
+		if (self::small_order($sig)) {
289
+			throw new SodiumException('Signature is on too small of an order');
290
+		}
291
+		if ((self::chrToInt($sig[63]) & 224) !== 0) {
292
+			throw new SodiumException('Invalid signature');
293
+		}
294
+		$d = 0;
295
+		for ($i = 0; $i < 32; ++$i) {
296
+			$d |= self::chrToInt($pk[$i]);
297
+		}
298
+		if ($d === 0) {
299
+			throw new SodiumException('All zero public key');
300
+		}
301
+
302
+		/** @var bool The original value of ParagonIE_Sodium_Compat::$fastMult */
303
+		$orig = ParagonIE_Sodium_Compat::$fastMult;
304
+
305
+		// Set ParagonIE_Sodium_Compat::$fastMult to true to speed up verification.
306
+		ParagonIE_Sodium_Compat::$fastMult = true;
307
+
308
+		/** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A */
309
+		$A = self::ge_frombytes_negate_vartime($pk);
310
+
311
+		/** @var string $hDigest */
312
+		$hDigest = hash(
313
+			'sha512',
314
+			self::substr($sig, 0, 32) .
315
+			self::substr($pk, 0, 32) .
316
+			$message,
317
+			true
318
+		);
319
+
320
+		/** @var string $h */
321
+		$h = self::sc_reduce($hDigest) . self::substr($hDigest, 32);
322
+
323
+		/** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $R */
324
+		$R = self::ge_double_scalarmult_vartime(
325
+			$h,
326
+			$A,
327
+			self::substr($sig, 32)
328
+		);
329
+
330
+		/** @var string $rcheck */
331
+		$rcheck = self::ge_tobytes($R);
332
+
333
+		// Reset ParagonIE_Sodium_Compat::$fastMult to what it was before.
334
+		ParagonIE_Sodium_Compat::$fastMult = $orig;
335
+
336
+		return self::verify_32($rcheck, self::substr($sig, 0, 32));
337
+	}
338
+
339
+	/**
340
+	 * @internal You should not use this directly from another application
341
+	 *
342
+	 * @param string $S
343
+	 * @return bool
344
+	 * @throws SodiumException
345
+	 * @throws TypeError
346
+	 */
347
+	public static function check_S_lt_L($S)
348
+	{
349
+		if (self::strlen($S) < 32) {
350
+			throw new SodiumException('Signature must be 32 bytes');
351
+		}
352
+		static $L = array(
353
+			0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58,
354
+			0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14,
355
+			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
356
+			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10
357
+		);
358
+		/** @var array<int, int> $L */
359
+		$c = 0;
360
+		$n = 1;
361
+		$i = 32;
362
+
363
+		do {
364
+			--$i;
365
+			$x = self::chrToInt($S[$i]);
366
+			$c |= (
367
+				(($x - $L[$i]) >> 8) & $n
368
+			);
369
+			$n &= (
370
+				(($x ^ $L[$i]) - 1) >> 8
371
+			);
372
+		} while ($i !== 0);
373
+
374
+		return $c === 0;
375
+	}
376
+
377
+	/**
378
+	 * @param string $R
379
+	 * @return bool
380
+	 * @throws SodiumException
381
+	 * @throws TypeError
382
+	 */
383
+	public static function small_order($R)
384
+	{
385
+		static $blocklist = array(
386
+			/* 0 (order 4) */
387
+			array(
388
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
389
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
390
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
391
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
392
+			),
393
+			/* 1 (order 1) */
394
+			array(
395
+				0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
396
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
397
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
398
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
399
+			),
400
+			/* 2707385501144840649318225287225658788936804267575313519463743609750303402022 (order 8) */
401
+			array(
402
+				0x26, 0xe8, 0x95, 0x8f, 0xc2, 0xb2, 0x27, 0xb0,
403
+				0x45, 0xc3, 0xf4, 0x89, 0xf2, 0xef, 0x98, 0xf0,
404
+				0xd5, 0xdf, 0xac, 0x05, 0xd3, 0xc6, 0x33, 0x39,
405
+				0xb1, 0x38, 0x02, 0x88, 0x6d, 0x53, 0xfc, 0x05
406
+			),
407
+			/* 55188659117513257062467267217118295137698188065244968500265048394206261417927 (order 8) */
408
+			array(
409
+				0xc7, 0x17, 0x6a, 0x70, 0x3d, 0x4d, 0xd8, 0x4f,
410
+				0xba, 0x3c, 0x0b, 0x76, 0x0d, 0x10, 0x67, 0x0f,
411
+				0x2a, 0x20, 0x53, 0xfa, 0x2c, 0x39, 0xcc, 0xc6,
412
+				0x4e, 0xc7, 0xfd, 0x77, 0x92, 0xac, 0x03, 0x7a
413
+			),
414
+			/* p-1 (order 2) */
415
+			array(
416
+				0x13, 0xe8, 0x95, 0x8f, 0xc2, 0xb2, 0x27, 0xb0,
417
+				0x45, 0xc3, 0xf4, 0x89, 0xf2, 0xef, 0x98, 0xf0,
418
+				0xd5, 0xdf, 0xac, 0x05, 0xd3, 0xc6, 0x33, 0x39,
419
+				0xb1, 0x38, 0x02, 0x88, 0x6d, 0x53, 0xfc, 0x85
420
+			),
421
+			/* p (order 4) */
422
+			array(
423
+				0xb4, 0x17, 0x6a, 0x70, 0x3d, 0x4d, 0xd8, 0x4f,
424
+				0xba, 0x3c, 0x0b, 0x76, 0x0d, 0x10, 0x67, 0x0f,
425
+				0x2a, 0x20, 0x53, 0xfa, 0x2c, 0x39, 0xcc, 0xc6,
426
+				0x4e, 0xc7, 0xfd, 0x77, 0x92, 0xac, 0x03, 0xfa
427
+			),
428
+			/* p+1 (order 1) */
429
+			array(
430
+				0xec, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
431
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
432
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
433
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
434
+			),
435
+			/* p+2707385501144840649318225287225658788936804267575313519463743609750303402022 (order 8) */
436
+			array(
437
+				0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
438
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
439
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
440
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
441
+			),
442
+			/* p+55188659117513257062467267217118295137698188065244968500265048394206261417927 (order 8) */
443
+			array(
444
+				0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
445
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
446
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
447
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
448
+			),
449
+			/* 2p-1 (order 2) */
450
+			array(
451
+				0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
452
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
453
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
454
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
455
+			),
456
+			/* 2p (order 4) */
457
+			array(
458
+				0xda, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
459
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
460
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
461
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
462
+			),
463
+			/* 2p+1 (order 1) */
464
+			array(
465
+				0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
466
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
467
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
468
+				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
469
+			)
470
+		);
471
+		/** @var array<int, array<int, int>> $blocklist */
472
+		$countBlocklist = count($blocklist);
473
+
474
+		for ($i = 0; $i < $countBlocklist; ++$i) {
475
+			$c = 0;
476
+			for ($j = 0; $j < 32; ++$j) {
477
+				$c |= self::chrToInt($R[$j]) ^ $blocklist[$i][$j];
478
+			}
479
+			if ($c === 0) {
480
+				return true;
481
+			}
482
+		}
483
+		return false;
484
+	}
485 485
 }
Please login to merge, or discard this patch.
Spacing   +96 added lines, -96 removed lines patch added patch discarded remove patch
@@ -1,10 +1,10 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core32_Ed25519', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core32_Ed25519', false ) ) {
4 4
     return;
5 5
 }
6
-if (!class_exists('ParagonIE_Sodium_Core32_Curve25519')) {
7
-    require_once dirname(__FILE__) . '/Curve25519.php';
6
+if ( ! class_exists( 'ParagonIE_Sodium_Core32_Curve25519' ) ) {
7
+    require_once dirname( __FILE__ ) . '/Curve25519.php';
8 8
 }
9 9
 
10 10
 /**
@@ -25,10 +25,10 @@  discard block
 block discarded – undo
25 25
      */
26 26
     public static function keypair()
27 27
     {
28
-        $seed = random_bytes(self::SEED_BYTES);
28
+        $seed = random_bytes( self::SEED_BYTES );
29 29
         $pk = '';
30 30
         $sk = '';
31
-        self::seed_keypair($pk, $sk, $seed);
31
+        self::seed_keypair( $pk, $sk, $seed );
32 32
         return $sk . $pk;
33 33
     }
34 34
 
@@ -42,14 +42,14 @@  discard block
 block discarded – undo
42 42
      * @throws SodiumException
43 43
      * @throws TypeError
44 44
      */
45
-    public static function seed_keypair(&$pk, &$sk, $seed)
45
+    public static function seed_keypair( &$pk, &$sk, $seed )
46 46
     {
47
-        if (self::strlen($seed) !== self::SEED_BYTES) {
48
-            throw new RangeException('crypto_sign keypair seed must be 32 bytes long');
47
+        if ( self::strlen( $seed ) !== self::SEED_BYTES ) {
48
+            throw new RangeException( 'crypto_sign keypair seed must be 32 bytes long' );
49 49
         }
50 50
 
51 51
         /** @var string $pk */
52
-        $pk = self::publickey_from_secretkey($seed);
52
+        $pk = self::publickey_from_secretkey( $seed );
53 53
         $sk = $seed . $pk;
54 54
         return $sk;
55 55
     }
@@ -61,12 +61,12 @@  discard block
 block discarded – undo
61 61
      * @return string
62 62
      * @throws TypeError
63 63
      */
64
-    public static function secretkey($keypair)
64
+    public static function secretkey( $keypair )
65 65
     {
66
-        if (self::strlen($keypair) !== self::KEYPAIR_BYTES) {
67
-            throw new RangeException('crypto_sign keypair must be 96 bytes long');
66
+        if ( self::strlen( $keypair ) !== self::KEYPAIR_BYTES ) {
67
+            throw new RangeException( 'crypto_sign keypair must be 96 bytes long' );
68 68
         }
69
-        return self::substr($keypair, 0, 64);
69
+        return self::substr( $keypair, 0, 64 );
70 70
     }
71 71
 
72 72
     /**
@@ -77,12 +77,12 @@  discard block
 block discarded – undo
77 77
      * @throws RangeException
78 78
      * @throws TypeError
79 79
      */
80
-    public static function publickey($keypair)
80
+    public static function publickey( $keypair )
81 81
     {
82
-        if (self::strlen($keypair) !== self::KEYPAIR_BYTES) {
83
-            throw new RangeException('crypto_sign keypair must be 96 bytes long');
82
+        if ( self::strlen( $keypair ) !== self::KEYPAIR_BYTES ) {
83
+            throw new RangeException( 'crypto_sign keypair must be 96 bytes long' );
84 84
         }
85
-        return self::substr($keypair, 64, 32);
85
+        return self::substr( $keypair, 64, 32 );
86 86
     }
87 87
 
88 88
     /**
@@ -93,17 +93,17 @@  discard block
 block discarded – undo
93 93
      * @throws SodiumException
94 94
      * @throws TypeError
95 95
      */
96
-    public static function publickey_from_secretkey($sk)
96
+    public static function publickey_from_secretkey( $sk )
97 97
     {
98 98
         /** @var string $sk */
99
-        $sk = hash('sha512', self::substr($sk, 0, 32), true);
100
-        $sk[0] = self::intToChr(
101
-            self::chrToInt($sk[0]) & 248
99
+        $sk = hash( 'sha512', self::substr( $sk, 0, 32 ), true );
100
+        $sk[ 0 ] = self::intToChr(
101
+            self::chrToInt( $sk[ 0 ] ) & 248
102 102
         );
103
-        $sk[31] = self::intToChr(
104
-            (self::chrToInt($sk[31]) & 63) | 64
103
+        $sk[ 31 ] = self::intToChr(
104
+            ( self::chrToInt( $sk[ 31 ] ) & 63 ) | 64
105 105
         );
106
-        return self::sk_to_pk($sk);
106
+        return self::sk_to_pk( $sk );
107 107
     }
108 108
 
109 109
     /**
@@ -112,15 +112,15 @@  discard block
 block discarded – undo
112 112
      * @throws SodiumException
113 113
      * @throws TypeError
114 114
      */
115
-    public static function pk_to_curve25519($pk)
115
+    public static function pk_to_curve25519( $pk )
116 116
     {
117
-        if (self::small_order($pk)) {
118
-            throw new SodiumException('Public key is on a small order');
117
+        if ( self::small_order( $pk ) ) {
118
+            throw new SodiumException( 'Public key is on a small order' );
119 119
         }
120
-        $A = self::ge_frombytes_negate_vartime($pk);
121
-        $p1 = self::ge_mul_l($A);
122
-        if (!self::fe_isnonzero($p1->X)) {
123
-            throw new SodiumException('Unexpected zero result');
120
+        $A = self::ge_frombytes_negate_vartime( $pk );
121
+        $p1 = self::ge_mul_l( $A );
122
+        if ( ! self::fe_isnonzero( $p1->X ) ) {
123
+            throw new SodiumException( 'Unexpected zero result' );
124 124
         }
125 125
 
126 126
         # fe_1(one_minus_y);
@@ -138,12 +138,12 @@  discard block
 block discarded – undo
138 138
         # fe_add(x, x, A.Y);
139 139
         # fe_mul(x, x, one_minus_y);
140 140
         $x = self::fe_mul(
141
-            self::fe_add(self::fe_1(), $A->Y),
141
+            self::fe_add( self::fe_1(), $A->Y ),
142 142
             $one_minux_y
143 143
         );
144 144
 
145 145
         # fe_tobytes(curve25519_pk, x);
146
-        return self::fe_tobytes($x);
146
+        return self::fe_tobytes( $x );
147 147
     }
148 148
 
149 149
     /**
@@ -154,11 +154,11 @@  discard block
 block discarded – undo
154 154
      * @throws SodiumException
155 155
      * @throws TypeError
156 156
      */
157
-    public static function sk_to_pk($sk)
157
+    public static function sk_to_pk( $sk )
158 158
     {
159 159
         return self::ge_p3_tobytes(
160 160
             self::ge_scalarmult_base(
161
-                self::substr($sk, 0, 32)
161
+                self::substr( $sk, 0, 32 )
162 162
             )
163 163
         );
164 164
     }
@@ -172,10 +172,10 @@  discard block
 block discarded – undo
172 172
      * @throws SodiumException
173 173
      * @throws TypeError
174 174
      */
175
-    public static function sign($message, $sk)
175
+    public static function sign( $message, $sk )
176 176
     {
177 177
         /** @var string $signature */
178
-        $signature = self::sign_detached($message, $sk);
178
+        $signature = self::sign_detached( $message, $sk );
179 179
         return $signature . $message;
180 180
     }
181 181
 
@@ -188,18 +188,18 @@  discard block
 block discarded – undo
188 188
      * @throws SodiumException
189 189
      * @throws TypeError
190 190
      */
191
-    public static function sign_open($message, $pk)
191
+    public static function sign_open( $message, $pk )
192 192
     {
193 193
         /** @var string $signature */
194
-        $signature = self::substr($message, 0, 64);
194
+        $signature = self::substr( $message, 0, 64 );
195 195
 
196 196
         /** @var string $message */
197
-        $message = self::substr($message, 64);
197
+        $message = self::substr( $message, 64 );
198 198
 
199
-        if (self::verify_detached($signature, $message, $pk)) {
199
+        if ( self::verify_detached( $signature, $message, $pk ) ) {
200 200
             return $message;
201 201
         }
202
-        throw new SodiumException('Invalid signature');
202
+        throw new SodiumException( 'Invalid signature' );
203 203
     }
204 204
 
205 205
     /**
@@ -212,56 +212,56 @@  discard block
 block discarded – undo
212 212
      * @throws TypeError
213 213
      * @psalm-suppress PossiblyInvalidArgument
214 214
      */
215
-    public static function sign_detached($message, $sk)
215
+    public static function sign_detached( $message, $sk )
216 216
     {
217 217
         # crypto_hash_sha512(az, sk, 32);
218
-        $az =  hash('sha512', self::substr($sk, 0, 32), true);
218
+        $az = hash( 'sha512', self::substr( $sk, 0, 32 ), true );
219 219
 
220 220
         # az[0] &= 248;
221 221
         # az[31] &= 63;
222 222
         # az[31] |= 64;
223
-        $az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
224
-        $az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);
223
+        $az[ 0 ] = self::intToChr( self::chrToInt( $az[ 0 ] ) & 248 );
224
+        $az[ 31 ] = self::intToChr( ( self::chrToInt( $az[ 31 ] ) & 63 ) | 64 );
225 225
 
226 226
         # crypto_hash_sha512_init(&hs);
227 227
         # crypto_hash_sha512_update(&hs, az + 32, 32);
228 228
         # crypto_hash_sha512_update(&hs, m, mlen);
229 229
         # crypto_hash_sha512_final(&hs, nonce);
230
-        $hs = hash_init('sha512');
231
-        self::hash_update($hs, self::substr($az, 32, 32));
232
-        self::hash_update($hs, $message);
233
-        $nonceHash = hash_final($hs, true);
230
+        $hs = hash_init( 'sha512' );
231
+        self::hash_update( $hs, self::substr( $az, 32, 32 ) );
232
+        self::hash_update( $hs, $message );
233
+        $nonceHash = hash_final( $hs, true );
234 234
 
235 235
         # memmove(sig + 32, sk + 32, 32);
236
-        $pk = self::substr($sk, 32, 32);
236
+        $pk = self::substr( $sk, 32, 32 );
237 237
 
238 238
         # sc_reduce(nonce);
239 239
         # ge_scalarmult_base(&R, nonce);
240 240
         # ge_p3_tobytes(sig, &R);
241
-        $nonce = self::sc_reduce($nonceHash) . self::substr($nonceHash, 32);
241
+        $nonce = self::sc_reduce( $nonceHash ) . self::substr( $nonceHash, 32 );
242 242
         $sig = self::ge_p3_tobytes(
243
-            self::ge_scalarmult_base($nonce)
243
+            self::ge_scalarmult_base( $nonce )
244 244
         );
245 245
 
246 246
         # crypto_hash_sha512_init(&hs);
247 247
         # crypto_hash_sha512_update(&hs, sig, 64);
248 248
         # crypto_hash_sha512_update(&hs, m, mlen);
249 249
         # crypto_hash_sha512_final(&hs, hram);
250
-        $hs = hash_init('sha512');
251
-        self::hash_update($hs, self::substr($sig, 0, 32));
252
-        self::hash_update($hs, self::substr($pk, 0, 32));
253
-        self::hash_update($hs, $message);
254
-        $hramHash = hash_final($hs, true);
250
+        $hs = hash_init( 'sha512' );
251
+        self::hash_update( $hs, self::substr( $sig, 0, 32 ) );
252
+        self::hash_update( $hs, self::substr( $pk, 0, 32 ) );
253
+        self::hash_update( $hs, $message );
254
+        $hramHash = hash_final( $hs, true );
255 255
 
256 256
         # sc_reduce(hram);
257 257
         # sc_muladd(sig + 32, hram, az, nonce);
258
-        $hram = self::sc_reduce($hramHash);
259
-        $sigAfter = self::sc_muladd($hram, $az, $nonce);
260
-        $sig = self::substr($sig, 0, 32) . self::substr($sigAfter, 0, 32);
258
+        $hram = self::sc_reduce( $hramHash );
259
+        $sigAfter = self::sc_muladd( $hram, $az, $nonce );
260
+        $sig = self::substr( $sig, 0, 32 ) . self::substr( $sigAfter, 0, 32 );
261 261
 
262 262
         try {
263
-            ParagonIE_Sodium_Compat::memzero($az);
264
-        } catch (SodiumException $ex) {
263
+            ParagonIE_Sodium_Compat::memzero( $az );
264
+        } catch ( SodiumException $ex ) {
265 265
             $az = null;
266 266
         }
267 267
         return $sig;
@@ -277,26 +277,26 @@  discard block
 block discarded – undo
277 277
      * @throws SodiumException
278 278
      * @throws TypeError
279 279
      */
280
-    public static function verify_detached($sig, $message, $pk)
280
+    public static function verify_detached( $sig, $message, $pk )
281 281
     {
282
-        if (self::strlen($sig) < 64) {
283
-            throw new SodiumException('Signature is too short');
282
+        if ( self::strlen( $sig ) < 64 ) {
283
+            throw new SodiumException( 'Signature is too short' );
284 284
         }
285
-        if ((self::chrToInt($sig[63]) & 240) && self::check_S_lt_L(self::substr($sig, 32, 32))) {
286
-            throw new SodiumException('S < L - Invalid signature');
285
+        if ( ( self::chrToInt( $sig[ 63 ] ) & 240 ) && self::check_S_lt_L( self::substr( $sig, 32, 32 ) ) ) {
286
+            throw new SodiumException( 'S < L - Invalid signature' );
287 287
         }
288
-        if (self::small_order($sig)) {
289
-            throw new SodiumException('Signature is on too small of an order');
288
+        if ( self::small_order( $sig ) ) {
289
+            throw new SodiumException( 'Signature is on too small of an order' );
290 290
         }
291
-        if ((self::chrToInt($sig[63]) & 224) !== 0) {
292
-            throw new SodiumException('Invalid signature');
291
+        if ( ( self::chrToInt( $sig[ 63 ] ) & 224 ) !== 0 ) {
292
+            throw new SodiumException( 'Invalid signature' );
293 293
         }
294 294
         $d = 0;
295
-        for ($i = 0; $i < 32; ++$i) {
296
-            $d |= self::chrToInt($pk[$i]);
295
+        for ( $i = 0; $i < 32; ++$i ) {
296
+            $d |= self::chrToInt( $pk[ $i ] );
297 297
         }
298
-        if ($d === 0) {
299
-            throw new SodiumException('All zero public key');
298
+        if ( $d === 0 ) {
299
+            throw new SodiumException( 'All zero public key' );
300 300
         }
301 301
 
302 302
         /** @var bool The original value of ParagonIE_Sodium_Compat::$fastMult */
@@ -306,34 +306,34 @@  discard block
 block discarded – undo
306 306
         ParagonIE_Sodium_Compat::$fastMult = true;
307 307
 
308 308
         /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A */
309
-        $A = self::ge_frombytes_negate_vartime($pk);
309
+        $A = self::ge_frombytes_negate_vartime( $pk );
310 310
 
311 311
         /** @var string $hDigest */
312 312
         $hDigest = hash(
313 313
             'sha512',
314
-            self::substr($sig, 0, 32) .
315
-            self::substr($pk, 0, 32) .
314
+            self::substr( $sig, 0, 32 ) .
315
+            self::substr( $pk, 0, 32 ) .
316 316
             $message,
317 317
             true
318 318
         );
319 319
 
320 320
         /** @var string $h */
321
-        $h = self::sc_reduce($hDigest) . self::substr($hDigest, 32);
321
+        $h = self::sc_reduce( $hDigest ) . self::substr( $hDigest, 32 );
322 322
 
323 323
         /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $R */
324 324
         $R = self::ge_double_scalarmult_vartime(
325 325
             $h,
326 326
             $A,
327
-            self::substr($sig, 32)
327
+            self::substr( $sig, 32 )
328 328
         );
329 329
 
330 330
         /** @var string $rcheck */
331
-        $rcheck = self::ge_tobytes($R);
331
+        $rcheck = self::ge_tobytes( $R );
332 332
 
333 333
         // Reset ParagonIE_Sodium_Compat::$fastMult to what it was before.
334 334
         ParagonIE_Sodium_Compat::$fastMult = $orig;
335 335
 
336
-        return self::verify_32($rcheck, self::substr($sig, 0, 32));
336
+        return self::verify_32( $rcheck, self::substr( $sig, 0, 32 ) );
337 337
     }
338 338
 
339 339
     /**
@@ -344,10 +344,10 @@  discard block
 block discarded – undo
344 344
      * @throws SodiumException
345 345
      * @throws TypeError
346 346
      */
347
-    public static function check_S_lt_L($S)
347
+    public static function check_S_lt_L( $S )
348 348
     {
349
-        if (self::strlen($S) < 32) {
350
-            throw new SodiumException('Signature must be 32 bytes');
349
+        if ( self::strlen( $S ) < 32 ) {
350
+            throw new SodiumException( 'Signature must be 32 bytes' );
351 351
         }
352 352
         static $L = array(
353 353
             0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58,
@@ -362,14 +362,14 @@  discard block
 block discarded – undo
362 362
 
363 363
         do {
364 364
             --$i;
365
-            $x = self::chrToInt($S[$i]);
365
+            $x = self::chrToInt( $S[ $i ] );
366 366
             $c |= (
367
-                (($x - $L[$i]) >> 8) & $n
367
+                ( ( $x - $L[ $i ] ) >> 8 ) & $n
368 368
             );
369 369
             $n &= (
370
-                (($x ^ $L[$i]) - 1) >> 8
370
+                ( ( $x ^ $L[ $i ] ) - 1 ) >> 8
371 371
             );
372
-        } while ($i !== 0);
372
+        } while ( $i !== 0 );
373 373
 
374 374
         return $c === 0;
375 375
     }
@@ -380,7 +380,7 @@  discard block
 block discarded – undo
380 380
      * @throws SodiumException
381 381
      * @throws TypeError
382 382
      */
383
-    public static function small_order($R)
383
+    public static function small_order( $R )
384 384
     {
385 385
         static $blocklist = array(
386 386
             /* 0 (order 4) */
@@ -469,14 +469,14 @@  discard block
 block discarded – undo
469 469
             )
470 470
         );
471 471
         /** @var array<int, array<int, int>> $blocklist */
472
-        $countBlocklist = count($blocklist);
472
+        $countBlocklist = count( $blocklist );
473 473
 
474
-        for ($i = 0; $i < $countBlocklist; ++$i) {
474
+        for ( $i = 0; $i < $countBlocklist; ++$i ) {
475 475
             $c = 0;
476
-            for ($j = 0; $j < 32; ++$j) {
477
-                $c |= self::chrToInt($R[$j]) ^ $blocklist[$i][$j];
476
+            for ( $j = 0; $j < 32; ++$j ) {
477
+                $c |= self::chrToInt( $R[ $j ] ) ^ $blocklist[ $i ][ $j ];
478 478
             }
479
-            if ($c === 0) {
479
+            if ( $c === 0 ) {
480 480
                 return true;
481 481
             }
482 482
         }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/Util.php 3 patches
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core32_Util', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core32_Util', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core32_Util', false ) ) {
4 4
     return;
5 5
 }
6 6
 
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -7,7 +7,6 @@
 block discarded – undo
7 7
 /**
8 8
  * Class ParagonIE_Sodium_Core_Util
9 9
  */
10
-abstract class ParagonIE_Sodium_Core32_Util extends ParagonIE_Sodium_Core_Util
11
-{
10
+abstract class ParagonIE_Sodium_Core32_Util extends ParagonIE_Sodium_Core_Util {
12 11
 
13 12
 }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/SipHash.php 3 patches
Indentation   +225 added lines, -225 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core32_SipHash', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -11,228 +11,228 @@  discard block
 block discarded – undo
11 11
  */
12 12
 class ParagonIE_Sodium_Core32_SipHash extends ParagonIE_Sodium_Core32_Util
13 13
 {
14
-    /**
15
-     * @internal You should not use this directly from another application
16
-     *
17
-     * @param array<int, ParagonIE_Sodium_Core32_Int64> $v
18
-     * @return array<int, ParagonIE_Sodium_Core32_Int64>
19
-     */
20
-    public static function sipRound(array $v)
21
-    {
22
-        # v0 += v1;
23
-        $v[0] = $v[0]->addInt64($v[1]);
24
-
25
-        # v1 = ROTL(v1, 13);
26
-        $v[1] = $v[1]->rotateLeft(13);
27
-
28
-        #  v1 ^= v0;
29
-        $v[1] = $v[1]->xorInt64($v[0]);
30
-
31
-        #  v0=ROTL(v0,32);
32
-        $v[0] = $v[0]->rotateLeft(32);
33
-
34
-        # v2 += v3;
35
-        $v[2] = $v[2]->addInt64($v[3]);
36
-
37
-        # v3=ROTL(v3,16);
38
-        $v[3] = $v[3]->rotateLeft(16);
39
-
40
-        #  v3 ^= v2;
41
-        $v[3] = $v[3]->xorInt64($v[2]);
42
-
43
-        # v0 += v3;
44
-        $v[0] = $v[0]->addInt64($v[3]);
45
-
46
-        # v3=ROTL(v3,21);
47
-        $v[3] = $v[3]->rotateLeft(21);
48
-
49
-        # v3 ^= v0;
50
-        $v[3] = $v[3]->xorInt64($v[0]);
51
-
52
-        # v2 += v1;
53
-        $v[2] = $v[2]->addInt64($v[1]);
54
-
55
-        # v1=ROTL(v1,17);
56
-        $v[1] = $v[1]->rotateLeft(17);
57
-
58
-        #  v1 ^= v2;
59
-        $v[1] = $v[1]->xorInt64($v[2]);
60
-
61
-        # v2=ROTL(v2,32)
62
-        $v[2] = $v[2]->rotateLeft(32);
63
-
64
-        return $v;
65
-    }
66
-
67
-    /**
68
-     * @internal You should not use this directly from another application
69
-     *
70
-     * @param string $in
71
-     * @param string $key
72
-     * @return string
73
-     * @throws SodiumException
74
-     * @throws TypeError
75
-     */
76
-    public static function sipHash24($in, $key)
77
-    {
78
-        $inlen = self::strlen($in);
79
-
80
-        # /* "somepseudorandomlygeneratedbytes" */
81
-        # u64 v0 = 0x736f6d6570736575ULL;
82
-        # u64 v1 = 0x646f72616e646f6dULL;
83
-        # u64 v2 = 0x6c7967656e657261ULL;
84
-        # u64 v3 = 0x7465646279746573ULL;
85
-        $v = array(
86
-            new ParagonIE_Sodium_Core32_Int64(
87
-                array(0x736f, 0x6d65, 0x7073, 0x6575)
88
-            ),
89
-            new ParagonIE_Sodium_Core32_Int64(
90
-                array(0x646f, 0x7261, 0x6e64, 0x6f6d)
91
-            ),
92
-            new ParagonIE_Sodium_Core32_Int64(
93
-                array(0x6c79, 0x6765, 0x6e65, 0x7261)
94
-            ),
95
-            new ParagonIE_Sodium_Core32_Int64(
96
-                array(0x7465, 0x6462, 0x7974, 0x6573)
97
-            )
98
-        );
99
-
100
-        # u64 k0 = LOAD64_LE( k );
101
-        # u64 k1 = LOAD64_LE( k + 8 );
102
-        $k = array(
103
-            ParagonIE_Sodium_Core32_Int64::fromReverseString(
104
-                self::substr($key, 0, 8)
105
-            ),
106
-            ParagonIE_Sodium_Core32_Int64::fromReverseString(
107
-                self::substr($key, 8, 8)
108
-            )
109
-        );
110
-
111
-        # b = ( ( u64 )inlen ) << 56;
112
-        $b = new ParagonIE_Sodium_Core32_Int64(
113
-            array(($inlen << 8) & 0xffff, 0, 0, 0)
114
-        );
115
-
116
-        # v3 ^= k1;
117
-        $v[3] = $v[3]->xorInt64($k[1]);
118
-        # v2 ^= k0;
119
-        $v[2] = $v[2]->xorInt64($k[0]);
120
-        # v1 ^= k1;
121
-        $v[1] = $v[1]->xorInt64($k[1]);
122
-        # v0 ^= k0;
123
-        $v[0] = $v[0]->xorInt64($k[0]);
124
-
125
-        $left = $inlen;
126
-        # for ( ; in != end; in += 8 )
127
-        while ($left >= 8) {
128
-            # m = LOAD64_LE( in );
129
-            $m = ParagonIE_Sodium_Core32_Int64::fromReverseString(
130
-                self::substr($in, 0, 8)
131
-            );
132
-
133
-            # v3 ^= m;
134
-            $v[3] = $v[3]->xorInt64($m);
135
-
136
-            # SIPROUND;
137
-            # SIPROUND;
138
-            $v = self::sipRound($v);
139
-            $v = self::sipRound($v);
140
-
141
-            # v0 ^= m;
142
-            $v[0] = $v[0]->xorInt64($m);
143
-
144
-            $in = self::substr($in, 8);
145
-            $left -= 8;
146
-        }
147
-
148
-        # switch( left )
149
-        #  {
150
-        #     case 7: b |= ( ( u64 )in[ 6] )  << 48;
151
-        #     case 6: b |= ( ( u64 )in[ 5] )  << 40;
152
-        #     case 5: b |= ( ( u64 )in[ 4] )  << 32;
153
-        #     case 4: b |= ( ( u64 )in[ 3] )  << 24;
154
-        #     case 3: b |= ( ( u64 )in[ 2] )  << 16;
155
-        #     case 2: b |= ( ( u64 )in[ 1] )  <<  8;
156
-        #     case 1: b |= ( ( u64 )in[ 0] ); break;
157
-        #     case 0: break;
158
-        # }
159
-        switch ($left) {
160
-            case 7:
161
-                $b = $b->orInt64(
162
-                    ParagonIE_Sodium_Core32_Int64::fromInts(
163
-                        0, self::chrToInt($in[6]) << 16
164
-                    )
165
-                );
166
-            case 6:
167
-                $b = $b->orInt64(
168
-                    ParagonIE_Sodium_Core32_Int64::fromInts(
169
-                        0, self::chrToInt($in[5]) << 8
170
-                    )
171
-                );
172
-            case 5:
173
-                $b = $b->orInt64(
174
-                    ParagonIE_Sodium_Core32_Int64::fromInts(
175
-                        0, self::chrToInt($in[4])
176
-                    )
177
-                );
178
-            case 4:
179
-                $b = $b->orInt64(
180
-                    ParagonIE_Sodium_Core32_Int64::fromInts(
181
-                        self::chrToInt($in[3]) << 24, 0
182
-                    )
183
-                );
184
-            case 3:
185
-                $b = $b->orInt64(
186
-                    ParagonIE_Sodium_Core32_Int64::fromInts(
187
-                        self::chrToInt($in[2]) << 16, 0
188
-                    )
189
-                );
190
-            case 2:
191
-                $b = $b->orInt64(
192
-                    ParagonIE_Sodium_Core32_Int64::fromInts(
193
-                        self::chrToInt($in[1]) << 8, 0
194
-                    )
195
-                );
196
-            case 1:
197
-                $b = $b->orInt64(
198
-                    ParagonIE_Sodium_Core32_Int64::fromInts(
199
-                        self::chrToInt($in[0]), 0
200
-                    )
201
-                );
202
-            case 0:
203
-                break;
204
-        }
205
-
206
-        # v3 ^= b;
207
-        $v[3] = $v[3]->xorInt64($b);
208
-
209
-        # SIPROUND;
210
-        # SIPROUND;
211
-        $v = self::sipRound($v);
212
-        $v = self::sipRound($v);
213
-
214
-        # v0 ^= b;
215
-        $v[0] = $v[0]->xorInt64($b);
216
-
217
-        // Flip the lower 8 bits of v2 which is ($v[4], $v[5]) in our implementation
218
-        # v2 ^= 0xff;
219
-        $v[2]->limbs[3] ^= 0xff;
220
-
221
-        # SIPROUND;
222
-        # SIPROUND;
223
-        # SIPROUND;
224
-        # SIPROUND;
225
-        $v = self::sipRound($v);
226
-        $v = self::sipRound($v);
227
-        $v = self::sipRound($v);
228
-        $v = self::sipRound($v);
229
-
230
-        # b = v0 ^ v1 ^ v2 ^ v3;
231
-        # STORE64_LE( out, b );
232
-        return $v[0]
233
-            ->xorInt64($v[1])
234
-            ->xorInt64($v[2])
235
-            ->xorInt64($v[3])
236
-            ->toReverseString();
237
-    }
14
+	/**
15
+	 * @internal You should not use this directly from another application
16
+	 *
17
+	 * @param array<int, ParagonIE_Sodium_Core32_Int64> $v
18
+	 * @return array<int, ParagonIE_Sodium_Core32_Int64>
19
+	 */
20
+	public static function sipRound(array $v)
21
+	{
22
+		# v0 += v1;
23
+		$v[0] = $v[0]->addInt64($v[1]);
24
+
25
+		# v1 = ROTL(v1, 13);
26
+		$v[1] = $v[1]->rotateLeft(13);
27
+
28
+		#  v1 ^= v0;
29
+		$v[1] = $v[1]->xorInt64($v[0]);
30
+
31
+		#  v0=ROTL(v0,32);
32
+		$v[0] = $v[0]->rotateLeft(32);
33
+
34
+		# v2 += v3;
35
+		$v[2] = $v[2]->addInt64($v[3]);
36
+
37
+		# v3=ROTL(v3,16);
38
+		$v[3] = $v[3]->rotateLeft(16);
39
+
40
+		#  v3 ^= v2;
41
+		$v[3] = $v[3]->xorInt64($v[2]);
42
+
43
+		# v0 += v3;
44
+		$v[0] = $v[0]->addInt64($v[3]);
45
+
46
+		# v3=ROTL(v3,21);
47
+		$v[3] = $v[3]->rotateLeft(21);
48
+
49
+		# v3 ^= v0;
50
+		$v[3] = $v[3]->xorInt64($v[0]);
51
+
52
+		# v2 += v1;
53
+		$v[2] = $v[2]->addInt64($v[1]);
54
+
55
+		# v1=ROTL(v1,17);
56
+		$v[1] = $v[1]->rotateLeft(17);
57
+
58
+		#  v1 ^= v2;
59
+		$v[1] = $v[1]->xorInt64($v[2]);
60
+
61
+		# v2=ROTL(v2,32)
62
+		$v[2] = $v[2]->rotateLeft(32);
63
+
64
+		return $v;
65
+	}
66
+
67
+	/**
68
+	 * @internal You should not use this directly from another application
69
+	 *
70
+	 * @param string $in
71
+	 * @param string $key
72
+	 * @return string
73
+	 * @throws SodiumException
74
+	 * @throws TypeError
75
+	 */
76
+	public static function sipHash24($in, $key)
77
+	{
78
+		$inlen = self::strlen($in);
79
+
80
+		# /* "somepseudorandomlygeneratedbytes" */
81
+		# u64 v0 = 0x736f6d6570736575ULL;
82
+		# u64 v1 = 0x646f72616e646f6dULL;
83
+		# u64 v2 = 0x6c7967656e657261ULL;
84
+		# u64 v3 = 0x7465646279746573ULL;
85
+		$v = array(
86
+			new ParagonIE_Sodium_Core32_Int64(
87
+				array(0x736f, 0x6d65, 0x7073, 0x6575)
88
+			),
89
+			new ParagonIE_Sodium_Core32_Int64(
90
+				array(0x646f, 0x7261, 0x6e64, 0x6f6d)
91
+			),
92
+			new ParagonIE_Sodium_Core32_Int64(
93
+				array(0x6c79, 0x6765, 0x6e65, 0x7261)
94
+			),
95
+			new ParagonIE_Sodium_Core32_Int64(
96
+				array(0x7465, 0x6462, 0x7974, 0x6573)
97
+			)
98
+		);
99
+
100
+		# u64 k0 = LOAD64_LE( k );
101
+		# u64 k1 = LOAD64_LE( k + 8 );
102
+		$k = array(
103
+			ParagonIE_Sodium_Core32_Int64::fromReverseString(
104
+				self::substr($key, 0, 8)
105
+			),
106
+			ParagonIE_Sodium_Core32_Int64::fromReverseString(
107
+				self::substr($key, 8, 8)
108
+			)
109
+		);
110
+
111
+		# b = ( ( u64 )inlen ) << 56;
112
+		$b = new ParagonIE_Sodium_Core32_Int64(
113
+			array(($inlen << 8) & 0xffff, 0, 0, 0)
114
+		);
115
+
116
+		# v3 ^= k1;
117
+		$v[3] = $v[3]->xorInt64($k[1]);
118
+		# v2 ^= k0;
119
+		$v[2] = $v[2]->xorInt64($k[0]);
120
+		# v1 ^= k1;
121
+		$v[1] = $v[1]->xorInt64($k[1]);
122
+		# v0 ^= k0;
123
+		$v[0] = $v[0]->xorInt64($k[0]);
124
+
125
+		$left = $inlen;
126
+		# for ( ; in != end; in += 8 )
127
+		while ($left >= 8) {
128
+			# m = LOAD64_LE( in );
129
+			$m = ParagonIE_Sodium_Core32_Int64::fromReverseString(
130
+				self::substr($in, 0, 8)
131
+			);
132
+
133
+			# v3 ^= m;
134
+			$v[3] = $v[3]->xorInt64($m);
135
+
136
+			# SIPROUND;
137
+			# SIPROUND;
138
+			$v = self::sipRound($v);
139
+			$v = self::sipRound($v);
140
+
141
+			# v0 ^= m;
142
+			$v[0] = $v[0]->xorInt64($m);
143
+
144
+			$in = self::substr($in, 8);
145
+			$left -= 8;
146
+		}
147
+
148
+		# switch( left )
149
+		#  {
150
+		#     case 7: b |= ( ( u64 )in[ 6] )  << 48;
151
+		#     case 6: b |= ( ( u64 )in[ 5] )  << 40;
152
+		#     case 5: b |= ( ( u64 )in[ 4] )  << 32;
153
+		#     case 4: b |= ( ( u64 )in[ 3] )  << 24;
154
+		#     case 3: b |= ( ( u64 )in[ 2] )  << 16;
155
+		#     case 2: b |= ( ( u64 )in[ 1] )  <<  8;
156
+		#     case 1: b |= ( ( u64 )in[ 0] ); break;
157
+		#     case 0: break;
158
+		# }
159
+		switch ($left) {
160
+			case 7:
161
+				$b = $b->orInt64(
162
+					ParagonIE_Sodium_Core32_Int64::fromInts(
163
+						0, self::chrToInt($in[6]) << 16
164
+					)
165
+				);
166
+			case 6:
167
+				$b = $b->orInt64(
168
+					ParagonIE_Sodium_Core32_Int64::fromInts(
169
+						0, self::chrToInt($in[5]) << 8
170
+					)
171
+				);
172
+			case 5:
173
+				$b = $b->orInt64(
174
+					ParagonIE_Sodium_Core32_Int64::fromInts(
175
+						0, self::chrToInt($in[4])
176
+					)
177
+				);
178
+			case 4:
179
+				$b = $b->orInt64(
180
+					ParagonIE_Sodium_Core32_Int64::fromInts(
181
+						self::chrToInt($in[3]) << 24, 0
182
+					)
183
+				);
184
+			case 3:
185
+				$b = $b->orInt64(
186
+					ParagonIE_Sodium_Core32_Int64::fromInts(
187
+						self::chrToInt($in[2]) << 16, 0
188
+					)
189
+				);
190
+			case 2:
191
+				$b = $b->orInt64(
192
+					ParagonIE_Sodium_Core32_Int64::fromInts(
193
+						self::chrToInt($in[1]) << 8, 0
194
+					)
195
+				);
196
+			case 1:
197
+				$b = $b->orInt64(
198
+					ParagonIE_Sodium_Core32_Int64::fromInts(
199
+						self::chrToInt($in[0]), 0
200
+					)
201
+				);
202
+			case 0:
203
+				break;
204
+		}
205
+
206
+		# v3 ^= b;
207
+		$v[3] = $v[3]->xorInt64($b);
208
+
209
+		# SIPROUND;
210
+		# SIPROUND;
211
+		$v = self::sipRound($v);
212
+		$v = self::sipRound($v);
213
+
214
+		# v0 ^= b;
215
+		$v[0] = $v[0]->xorInt64($b);
216
+
217
+		// Flip the lower 8 bits of v2 which is ($v[4], $v[5]) in our implementation
218
+		# v2 ^= 0xff;
219
+		$v[2]->limbs[3] ^= 0xff;
220
+
221
+		# SIPROUND;
222
+		# SIPROUND;
223
+		# SIPROUND;
224
+		# SIPROUND;
225
+		$v = self::sipRound($v);
226
+		$v = self::sipRound($v);
227
+		$v = self::sipRound($v);
228
+		$v = self::sipRound($v);
229
+
230
+		# b = v0 ^ v1 ^ v2 ^ v3;
231
+		# STORE64_LE( out, b );
232
+		return $v[0]
233
+			->xorInt64($v[1])
234
+			->xorInt64($v[2])
235
+			->xorInt64($v[3])
236
+			->toReverseString();
237
+	}
238 238
 }
Please login to merge, or discard this patch.
Spacing   +57 added lines, -57 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core32_SipHash', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core32_SipHash', false ) ) {
4 4
     return;
5 5
 }
6 6
 
@@ -17,49 +17,49 @@  discard block
 block discarded – undo
17 17
      * @param array<int, ParagonIE_Sodium_Core32_Int64> $v
18 18
      * @return array<int, ParagonIE_Sodium_Core32_Int64>
19 19
      */
20
-    public static function sipRound(array $v)
20
+    public static function sipRound( array $v )
21 21
     {
22 22
         # v0 += v1;
23
-        $v[0] = $v[0]->addInt64($v[1]);
23
+        $v[ 0 ] = $v[ 0 ]->addInt64( $v[ 1 ] );
24 24
 
25 25
         # v1 = ROTL(v1, 13);
26
-        $v[1] = $v[1]->rotateLeft(13);
26
+        $v[ 1 ] = $v[ 1 ]->rotateLeft( 13 );
27 27
 
28 28
         #  v1 ^= v0;
29
-        $v[1] = $v[1]->xorInt64($v[0]);
29
+        $v[ 1 ] = $v[ 1 ]->xorInt64( $v[ 0 ] );
30 30
 
31 31
         #  v0=ROTL(v0,32);
32
-        $v[0] = $v[0]->rotateLeft(32);
32
+        $v[ 0 ] = $v[ 0 ]->rotateLeft( 32 );
33 33
 
34 34
         # v2 += v3;
35
-        $v[2] = $v[2]->addInt64($v[3]);
35
+        $v[ 2 ] = $v[ 2 ]->addInt64( $v[ 3 ] );
36 36
 
37 37
         # v3=ROTL(v3,16);
38
-        $v[3] = $v[3]->rotateLeft(16);
38
+        $v[ 3 ] = $v[ 3 ]->rotateLeft( 16 );
39 39
 
40 40
         #  v3 ^= v2;
41
-        $v[3] = $v[3]->xorInt64($v[2]);
41
+        $v[ 3 ] = $v[ 3 ]->xorInt64( $v[ 2 ] );
42 42
 
43 43
         # v0 += v3;
44
-        $v[0] = $v[0]->addInt64($v[3]);
44
+        $v[ 0 ] = $v[ 0 ]->addInt64( $v[ 3 ] );
45 45
 
46 46
         # v3=ROTL(v3,21);
47
-        $v[3] = $v[3]->rotateLeft(21);
47
+        $v[ 3 ] = $v[ 3 ]->rotateLeft( 21 );
48 48
 
49 49
         # v3 ^= v0;
50
-        $v[3] = $v[3]->xorInt64($v[0]);
50
+        $v[ 3 ] = $v[ 3 ]->xorInt64( $v[ 0 ] );
51 51
 
52 52
         # v2 += v1;
53
-        $v[2] = $v[2]->addInt64($v[1]);
53
+        $v[ 2 ] = $v[ 2 ]->addInt64( $v[ 1 ] );
54 54
 
55 55
         # v1=ROTL(v1,17);
56
-        $v[1] = $v[1]->rotateLeft(17);
56
+        $v[ 1 ] = $v[ 1 ]->rotateLeft( 17 );
57 57
 
58 58
         #  v1 ^= v2;
59
-        $v[1] = $v[1]->xorInt64($v[2]);
59
+        $v[ 1 ] = $v[ 1 ]->xorInt64( $v[ 2 ] );
60 60
 
61 61
         # v2=ROTL(v2,32)
62
-        $v[2] = $v[2]->rotateLeft(32);
62
+        $v[ 2 ] = $v[ 2 ]->rotateLeft( 32 );
63 63
 
64 64
         return $v;
65 65
     }
@@ -73,9 +73,9 @@  discard block
 block discarded – undo
73 73
      * @throws SodiumException
74 74
      * @throws TypeError
75 75
      */
76
-    public static function sipHash24($in, $key)
76
+    public static function sipHash24( $in, $key )
77 77
     {
78
-        $inlen = self::strlen($in);
78
+        $inlen = self::strlen( $in );
79 79
 
80 80
         # /* "somepseudorandomlygeneratedbytes" */
81 81
         # u64 v0 = 0x736f6d6570736575ULL;
@@ -84,16 +84,16 @@  discard block
 block discarded – undo
84 84
         # u64 v3 = 0x7465646279746573ULL;
85 85
         $v = array(
86 86
             new ParagonIE_Sodium_Core32_Int64(
87
-                array(0x736f, 0x6d65, 0x7073, 0x6575)
87
+                array( 0x736f, 0x6d65, 0x7073, 0x6575 )
88 88
             ),
89 89
             new ParagonIE_Sodium_Core32_Int64(
90
-                array(0x646f, 0x7261, 0x6e64, 0x6f6d)
90
+                array( 0x646f, 0x7261, 0x6e64, 0x6f6d )
91 91
             ),
92 92
             new ParagonIE_Sodium_Core32_Int64(
93
-                array(0x6c79, 0x6765, 0x6e65, 0x7261)
93
+                array( 0x6c79, 0x6765, 0x6e65, 0x7261 )
94 94
             ),
95 95
             new ParagonIE_Sodium_Core32_Int64(
96
-                array(0x7465, 0x6462, 0x7974, 0x6573)
96
+                array( 0x7465, 0x6462, 0x7974, 0x6573 )
97 97
             )
98 98
         );
99 99
 
@@ -101,47 +101,47 @@  discard block
 block discarded – undo
101 101
         # u64 k1 = LOAD64_LE( k + 8 );
102 102
         $k = array(
103 103
             ParagonIE_Sodium_Core32_Int64::fromReverseString(
104
-                self::substr($key, 0, 8)
104
+                self::substr( $key, 0, 8 )
105 105
             ),
106 106
             ParagonIE_Sodium_Core32_Int64::fromReverseString(
107
-                self::substr($key, 8, 8)
107
+                self::substr( $key, 8, 8 )
108 108
             )
109 109
         );
110 110
 
111 111
         # b = ( ( u64 )inlen ) << 56;
112 112
         $b = new ParagonIE_Sodium_Core32_Int64(
113
-            array(($inlen << 8) & 0xffff, 0, 0, 0)
113
+            array( ( $inlen << 8 ) & 0xffff, 0, 0, 0 )
114 114
         );
115 115
 
116 116
         # v3 ^= k1;
117
-        $v[3] = $v[3]->xorInt64($k[1]);
117
+        $v[ 3 ] = $v[ 3 ]->xorInt64( $k[ 1 ] );
118 118
         # v2 ^= k0;
119
-        $v[2] = $v[2]->xorInt64($k[0]);
119
+        $v[ 2 ] = $v[ 2 ]->xorInt64( $k[ 0 ] );
120 120
         # v1 ^= k1;
121
-        $v[1] = $v[1]->xorInt64($k[1]);
121
+        $v[ 1 ] = $v[ 1 ]->xorInt64( $k[ 1 ] );
122 122
         # v0 ^= k0;
123
-        $v[0] = $v[0]->xorInt64($k[0]);
123
+        $v[ 0 ] = $v[ 0 ]->xorInt64( $k[ 0 ] );
124 124
 
125 125
         $left = $inlen;
126 126
         # for ( ; in != end; in += 8 )
127
-        while ($left >= 8) {
127
+        while ( $left >= 8 ) {
128 128
             # m = LOAD64_LE( in );
129 129
             $m = ParagonIE_Sodium_Core32_Int64::fromReverseString(
130
-                self::substr($in, 0, 8)
130
+                self::substr( $in, 0, 8 )
131 131
             );
132 132
 
133 133
             # v3 ^= m;
134
-            $v[3] = $v[3]->xorInt64($m);
134
+            $v[ 3 ] = $v[ 3 ]->xorInt64( $m );
135 135
 
136 136
             # SIPROUND;
137 137
             # SIPROUND;
138
-            $v = self::sipRound($v);
139
-            $v = self::sipRound($v);
138
+            $v = self::sipRound( $v );
139
+            $v = self::sipRound( $v );
140 140
 
141 141
             # v0 ^= m;
142
-            $v[0] = $v[0]->xorInt64($m);
142
+            $v[ 0 ] = $v[ 0 ]->xorInt64( $m );
143 143
 
144
-            $in = self::substr($in, 8);
144
+            $in = self::substr( $in, 8 );
145 145
             $left -= 8;
146 146
         }
147 147
 
@@ -156,47 +156,47 @@  discard block
 block discarded – undo
156 156
         #     case 1: b |= ( ( u64 )in[ 0] ); break;
157 157
         #     case 0: break;
158 158
         # }
159
-        switch ($left) {
159
+        switch ( $left ) {
160 160
             case 7:
161 161
                 $b = $b->orInt64(
162 162
                     ParagonIE_Sodium_Core32_Int64::fromInts(
163
-                        0, self::chrToInt($in[6]) << 16
163
+                        0, self::chrToInt( $in[ 6 ] ) << 16
164 164
                     )
165 165
                 );
166 166
             case 6:
167 167
                 $b = $b->orInt64(
168 168
                     ParagonIE_Sodium_Core32_Int64::fromInts(
169
-                        0, self::chrToInt($in[5]) << 8
169
+                        0, self::chrToInt( $in[ 5 ] ) << 8
170 170
                     )
171 171
                 );
172 172
             case 5:
173 173
                 $b = $b->orInt64(
174 174
                     ParagonIE_Sodium_Core32_Int64::fromInts(
175
-                        0, self::chrToInt($in[4])
175
+                        0, self::chrToInt( $in[ 4 ] )
176 176
                     )
177 177
                 );
178 178
             case 4:
179 179
                 $b = $b->orInt64(
180 180
                     ParagonIE_Sodium_Core32_Int64::fromInts(
181
-                        self::chrToInt($in[3]) << 24, 0
181
+                        self::chrToInt( $in[ 3 ] ) << 24, 0
182 182
                     )
183 183
                 );
184 184
             case 3:
185 185
                 $b = $b->orInt64(
186 186
                     ParagonIE_Sodium_Core32_Int64::fromInts(
187
-                        self::chrToInt($in[2]) << 16, 0
187
+                        self::chrToInt( $in[ 2 ] ) << 16, 0
188 188
                     )
189 189
                 );
190 190
             case 2:
191 191
                 $b = $b->orInt64(
192 192
                     ParagonIE_Sodium_Core32_Int64::fromInts(
193
-                        self::chrToInt($in[1]) << 8, 0
193
+                        self::chrToInt( $in[ 1 ] ) << 8, 0
194 194
                     )
195 195
                 );
196 196
             case 1:
197 197
                 $b = $b->orInt64(
198 198
                     ParagonIE_Sodium_Core32_Int64::fromInts(
199
-                        self::chrToInt($in[0]), 0
199
+                        self::chrToInt( $in[ 0 ] ), 0
200 200
                     )
201 201
                 );
202 202
             case 0:
@@ -204,35 +204,35 @@  discard block
 block discarded – undo
204 204
         }
205 205
 
206 206
         # v3 ^= b;
207
-        $v[3] = $v[3]->xorInt64($b);
207
+        $v[ 3 ] = $v[ 3 ]->xorInt64( $b );
208 208
 
209 209
         # SIPROUND;
210 210
         # SIPROUND;
211
-        $v = self::sipRound($v);
212
-        $v = self::sipRound($v);
211
+        $v = self::sipRound( $v );
212
+        $v = self::sipRound( $v );
213 213
 
214 214
         # v0 ^= b;
215
-        $v[0] = $v[0]->xorInt64($b);
215
+        $v[ 0 ] = $v[ 0 ]->xorInt64( $b );
216 216
 
217 217
         // Flip the lower 8 bits of v2 which is ($v[4], $v[5]) in our implementation
218 218
         # v2 ^= 0xff;
219
-        $v[2]->limbs[3] ^= 0xff;
219
+        $v[ 2 ]->limbs[ 3 ] ^= 0xff;
220 220
 
221 221
         # SIPROUND;
222 222
         # SIPROUND;
223 223
         # SIPROUND;
224 224
         # SIPROUND;
225
-        $v = self::sipRound($v);
226
-        $v = self::sipRound($v);
227
-        $v = self::sipRound($v);
228
-        $v = self::sipRound($v);
225
+        $v = self::sipRound( $v );
226
+        $v = self::sipRound( $v );
227
+        $v = self::sipRound( $v );
228
+        $v = self::sipRound( $v );
229 229
 
230 230
         # b = v0 ^ v1 ^ v2 ^ v3;
231 231
         # STORE64_LE( out, b );
232
-        return $v[0]
233
-            ->xorInt64($v[1])
234
-            ->xorInt64($v[2])
235
-            ->xorInt64($v[3])
232
+        return $v[ 0 ]
233
+            ->xorInt64( $v[ 1 ] )
234
+            ->xorInt64( $v[ 2 ] )
235
+            ->xorInt64( $v[ 3 ] )
236 236
             ->toReverseString();
237 237
     }
238 238
 }
Please login to merge, or discard this patch.
Braces   +3 added lines, -6 removed lines patch added patch discarded remove patch
@@ -9,16 +9,14 @@  discard block
 block discarded – undo
9 9
  *
10 10
  * Only uses 32-bit arithmetic, while the original SipHash used 64-bit integers
11 11
  */
12
-class ParagonIE_Sodium_Core32_SipHash extends ParagonIE_Sodium_Core32_Util
13
-{
12
+class ParagonIE_Sodium_Core32_SipHash extends ParagonIE_Sodium_Core32_Util {
14 13
     /**
15 14
      * @internal You should not use this directly from another application
16 15
      *
17 16
      * @param array<int, ParagonIE_Sodium_Core32_Int64> $v
18 17
      * @return array<int, ParagonIE_Sodium_Core32_Int64>
19 18
      */
20
-    public static function sipRound(array $v)
21
-    {
19
+    public static function sipRound(array $v) {
22 20
         # v0 += v1;
23 21
         $v[0] = $v[0]->addInt64($v[1]);
24 22
 
@@ -73,8 +71,7 @@  discard block
 block discarded – undo
73 71
      * @throws SodiumException
74 72
      * @throws TypeError
75 73
      */
76
-    public static function sipHash24($in, $key)
77
-    {
74
+    public static function sipHash24($in, $key) {
78 75
         $inlen = self::strlen($in);
79 76
 
80 77
         # /* "somepseudorandomlygeneratedbytes" */
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/X25519.php 3 patches
Indentation   +334 added lines, -334 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core32_X25519', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -9,337 +9,337 @@  discard block
 block discarded – undo
9 9
  */
10 10
 abstract class ParagonIE_Sodium_Core32_X25519 extends ParagonIE_Sodium_Core32_Curve25519
11 11
 {
12
-    /**
13
-     * Alters the objects passed to this method in place.
14
-     *
15
-     * @internal You should not use this directly from another application
16
-     *
17
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
18
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
19
-     * @param int $b
20
-     * @return void
21
-     * @throws SodiumException
22
-     * @throws TypeError
23
-     * @psalm-suppress MixedMethodCall
24
-     */
25
-    public static function fe_cswap(
26
-        ParagonIE_Sodium_Core32_Curve25519_Fe $f,
27
-        ParagonIE_Sodium_Core32_Curve25519_Fe $g,
28
-        $b = 0
29
-    ) {
30
-        $f0 = (int) $f[0]->toInt();
31
-        $f1 = (int) $f[1]->toInt();
32
-        $f2 = (int) $f[2]->toInt();
33
-        $f3 = (int) $f[3]->toInt();
34
-        $f4 = (int) $f[4]->toInt();
35
-        $f5 = (int) $f[5]->toInt();
36
-        $f6 = (int) $f[6]->toInt();
37
-        $f7 = (int) $f[7]->toInt();
38
-        $f8 = (int) $f[8]->toInt();
39
-        $f9 = (int) $f[9]->toInt();
40
-        $g0 = (int) $g[0]->toInt();
41
-        $g1 = (int) $g[1]->toInt();
42
-        $g2 = (int) $g[2]->toInt();
43
-        $g3 = (int) $g[3]->toInt();
44
-        $g4 = (int) $g[4]->toInt();
45
-        $g5 = (int) $g[5]->toInt();
46
-        $g6 = (int) $g[6]->toInt();
47
-        $g7 = (int) $g[7]->toInt();
48
-        $g8 = (int) $g[8]->toInt();
49
-        $g9 = (int) $g[9]->toInt();
50
-        $b = -$b;
51
-        /** @var int $x0 */
52
-        $x0 = ($f0 ^ $g0) & $b;
53
-        /** @var int $x1 */
54
-        $x1 = ($f1 ^ $g1) & $b;
55
-        /** @var int $x2 */
56
-        $x2 = ($f2 ^ $g2) & $b;
57
-        /** @var int $x3 */
58
-        $x3 = ($f3 ^ $g3) & $b;
59
-        /** @var int $x4 */
60
-        $x4 = ($f4 ^ $g4) & $b;
61
-        /** @var int $x5 */
62
-        $x5 = ($f5 ^ $g5) & $b;
63
-        /** @var int $x6 */
64
-        $x6 = ($f6 ^ $g6) & $b;
65
-        /** @var int $x7 */
66
-        $x7 = ($f7 ^ $g7) & $b;
67
-        /** @var int $x8 */
68
-        $x8 = ($f8 ^ $g8) & $b;
69
-        /** @var int $x9 */
70
-        $x9 = ($f9 ^ $g9) & $b;
71
-        $f[0] = ParagonIE_Sodium_Core32_Int32::fromInt($f0 ^ $x0);
72
-        $f[1] = ParagonIE_Sodium_Core32_Int32::fromInt($f1 ^ $x1);
73
-        $f[2] = ParagonIE_Sodium_Core32_Int32::fromInt($f2 ^ $x2);
74
-        $f[3] = ParagonIE_Sodium_Core32_Int32::fromInt($f3 ^ $x3);
75
-        $f[4] = ParagonIE_Sodium_Core32_Int32::fromInt($f4 ^ $x4);
76
-        $f[5] = ParagonIE_Sodium_Core32_Int32::fromInt($f5 ^ $x5);
77
-        $f[6] = ParagonIE_Sodium_Core32_Int32::fromInt($f6 ^ $x6);
78
-        $f[7] = ParagonIE_Sodium_Core32_Int32::fromInt($f7 ^ $x7);
79
-        $f[8] = ParagonIE_Sodium_Core32_Int32::fromInt($f8 ^ $x8);
80
-        $f[9] = ParagonIE_Sodium_Core32_Int32::fromInt($f9 ^ $x9);
81
-        $g[0] = ParagonIE_Sodium_Core32_Int32::fromInt($g0 ^ $x0);
82
-        $g[1] = ParagonIE_Sodium_Core32_Int32::fromInt($g1 ^ $x1);
83
-        $g[2] = ParagonIE_Sodium_Core32_Int32::fromInt($g2 ^ $x2);
84
-        $g[3] = ParagonIE_Sodium_Core32_Int32::fromInt($g3 ^ $x3);
85
-        $g[4] = ParagonIE_Sodium_Core32_Int32::fromInt($g4 ^ $x4);
86
-        $g[5] = ParagonIE_Sodium_Core32_Int32::fromInt($g5 ^ $x5);
87
-        $g[6] = ParagonIE_Sodium_Core32_Int32::fromInt($g6 ^ $x6);
88
-        $g[7] = ParagonIE_Sodium_Core32_Int32::fromInt($g7 ^ $x7);
89
-        $g[8] = ParagonIE_Sodium_Core32_Int32::fromInt($g8 ^ $x8);
90
-        $g[9] = ParagonIE_Sodium_Core32_Int32::fromInt($g9 ^ $x9);
91
-    }
92
-
93
-    /**
94
-     * @internal You should not use this directly from another application
95
-     *
96
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
97
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
98
-     * @throws SodiumException
99
-     * @throws TypeError
100
-     * @psalm-suppress MixedAssignment
101
-     * @psalm-suppress MixedMethodCall
102
-     */
103
-    public static function fe_mul121666(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
104
-    {
105
-        /** @var array<int, ParagonIE_Sodium_Core32_Int64> $h */
106
-        $h = array();
107
-        for ($i = 0; $i < 10; ++$i) {
108
-            $h[$i] = $f[$i]->toInt64()->mulInt(121666, 17);
109
-        }
110
-
111
-        $carry9 = $h[9]->addInt(1 << 24)->shiftRight(25);
112
-        $h[0] = $h[0]->addInt64($carry9->mulInt(19, 5));
113
-        $h[9] = $h[9]->subInt64($carry9->shiftLeft(25));
114
-
115
-        $carry1 = $h[1]->addInt(1 << 24)->shiftRight(25);
116
-        $h[2] = $h[2]->addInt64($carry1);
117
-        $h[1] = $h[1]->subInt64($carry1->shiftLeft(25));
118
-
119
-        $carry3 = $h[3]->addInt(1 << 24)->shiftRight(25);
120
-        $h[4] = $h[4]->addInt64($carry3);
121
-        $h[3] = $h[3]->subInt64($carry3->shiftLeft(25));
122
-
123
-        $carry5 = $h[5]->addInt(1 << 24)->shiftRight(25);
124
-        $h[6] = $h[6]->addInt64($carry5);
125
-        $h[5] = $h[5]->subInt64($carry5->shiftLeft(25));
126
-
127
-        $carry7 = $h[7]->addInt(1 << 24)->shiftRight(25);
128
-        $h[8] = $h[8]->addInt64($carry7);
129
-        $h[7] = $h[7]->subInt64($carry7->shiftLeft(25));
130
-
131
-        $carry0 = $h[0]->addInt(1 << 25)->shiftRight(26);
132
-        $h[1] = $h[1]->addInt64($carry0);
133
-        $h[0] = $h[0]->subInt64($carry0->shiftLeft(26));
134
-
135
-        $carry2 = $h[2]->addInt(1 << 25)->shiftRight(26);
136
-        $h[3] = $h[3]->addInt64($carry2);
137
-        $h[2] = $h[2]->subInt64($carry2->shiftLeft(26));
138
-
139
-        $carry4 = $h[4]->addInt(1 << 25)->shiftRight(26);
140
-        $h[5] = $h[5]->addInt64($carry4);
141
-        $h[4] = $h[4]->subInt64($carry4->shiftLeft(26));
142
-
143
-        $carry6 = $h[6]->addInt(1 << 25)->shiftRight(26);
144
-        $h[7] = $h[7]->addInt64($carry6);
145
-        $h[6] = $h[6]->subInt64($carry6->shiftLeft(26));
146
-
147
-        $carry8 = $h[8]->addInt(1 << 25)->shiftRight(26);
148
-        $h[9] = $h[9]->addInt64($carry8);
149
-        $h[8] = $h[8]->subInt64($carry8->shiftLeft(26));
150
-
151
-        for ($i = 0; $i < 10; ++$i) {
152
-            $h[$i] = $h[$i]->toInt32();
153
-        }
154
-        /** @var array<int, ParagonIE_Sodium_Core32_Int32> $h2 */
155
-        $h2 = $h;
156
-        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($h2);
157
-    }
158
-
159
-    /**
160
-     * @internal You should not use this directly from another application
161
-     *
162
-     * Inline comments preceded by # are from libsodium's ref10 code.
163
-     *
164
-     * @param string $n
165
-     * @param string $p
166
-     * @return string
167
-     * @throws SodiumException
168
-     * @throws TypeError
169
-     */
170
-    public static function crypto_scalarmult_curve25519_ref10($n, $p)
171
-    {
172
-        # for (i = 0;i < 32;++i) e[i] = n[i];
173
-        $e = '' . $n;
174
-        # e[0] &= 248;
175
-        $e[0] = self::intToChr(
176
-            self::chrToInt($e[0]) & 248
177
-        );
178
-        # e[31] &= 127;
179
-        # e[31] |= 64;
180
-        $e[31] = self::intToChr(
181
-            (self::chrToInt($e[31]) & 127) | 64
182
-        );
183
-        # fe_frombytes(x1,p);
184
-        $x1 = self::fe_frombytes($p);
185
-        # fe_1(x2);
186
-        $x2 = self::fe_1();
187
-        # fe_0(z2);
188
-        $z2 = self::fe_0();
189
-        # fe_copy(x3,x1);
190
-        $x3 = self::fe_copy($x1);
191
-        # fe_1(z3);
192
-        $z3 = self::fe_1();
193
-
194
-        # swap = 0;
195
-        /** @var int $swap */
196
-        $swap = 0;
197
-
198
-        # for (pos = 254;pos >= 0;--pos) {
199
-        for ($pos = 254; $pos >= 0; --$pos) {
200
-            # b = e[pos / 8] >> (pos & 7);
201
-            /** @var int $b */
202
-            $b = self::chrToInt(
203
-                    $e[(int) floor($pos / 8)]
204
-                ) >> ($pos & 7);
205
-            # b &= 1;
206
-            $b &= 1;
207
-
208
-            # swap ^= b;
209
-            $swap ^= $b;
210
-
211
-            # fe_cswap(x2,x3,swap);
212
-            self::fe_cswap($x2, $x3, $swap);
213
-
214
-            # fe_cswap(z2,z3,swap);
215
-            self::fe_cswap($z2, $z3, $swap);
216
-
217
-            # swap = b;
218
-            /** @var int $swap */
219
-            $swap = $b;
220
-
221
-            # fe_sub(tmp0,x3,z3);
222
-            $tmp0 = self::fe_sub($x3, $z3);
223
-
224
-            # fe_sub(tmp1,x2,z2);
225
-            $tmp1 = self::fe_sub($x2, $z2);
226
-
227
-            # fe_add(x2,x2,z2);
228
-            $x2 = self::fe_add($x2, $z2);
229
-
230
-            # fe_add(z2,x3,z3);
231
-            $z2 = self::fe_add($x3, $z3);
232
-
233
-            # fe_mul(z3,tmp0,x2);
234
-            $z3 = self::fe_mul($tmp0, $x2);
235
-
236
-            # fe_mul(z2,z2,tmp1);
237
-            $z2 = self::fe_mul($z2, $tmp1);
238
-
239
-            # fe_sq(tmp0,tmp1);
240
-            $tmp0 = self::fe_sq($tmp1);
241
-
242
-            # fe_sq(tmp1,x2);
243
-            $tmp1 = self::fe_sq($x2);
244
-
245
-            # fe_add(x3,z3,z2);
246
-            $x3 = self::fe_add($z3, $z2);
247
-
248
-            # fe_sub(z2,z3,z2);
249
-            $z2 = self::fe_sub($z3, $z2);
250
-
251
-            # fe_mul(x2,tmp1,tmp0);
252
-            $x2 = self::fe_mul($tmp1, $tmp0);
253
-
254
-            # fe_sub(tmp1,tmp1,tmp0);
255
-            $tmp1 = self::fe_sub($tmp1, $tmp0);
256
-
257
-            # fe_sq(z2,z2);
258
-            $z2 = self::fe_sq($z2);
259
-
260
-            # fe_mul121666(z3,tmp1);
261
-            $z3 = self::fe_mul121666($tmp1);
262
-
263
-            # fe_sq(x3,x3);
264
-            $x3 = self::fe_sq($x3);
265
-
266
-            # fe_add(tmp0,tmp0,z3);
267
-            $tmp0 = self::fe_add($tmp0, $z3);
268
-
269
-            # fe_mul(z3,x1,z2);
270
-            $z3 = self::fe_mul($x1, $z2);
271
-
272
-            # fe_mul(z2,tmp1,tmp0);
273
-            $z2 = self::fe_mul($tmp1, $tmp0);
274
-        }
275
-
276
-        # fe_cswap(x2,x3,swap);
277
-        self::fe_cswap($x2, $x3, $swap);
278
-
279
-        # fe_cswap(z2,z3,swap);
280
-        self::fe_cswap($z2, $z3, $swap);
281
-
282
-        # fe_invert(z2,z2);
283
-        $z2 = self::fe_invert($z2);
284
-
285
-        # fe_mul(x2,x2,z2);
286
-        $x2 = self::fe_mul($x2, $z2);
287
-        # fe_tobytes(q,x2);
288
-        return (string) self::fe_tobytes($x2);
289
-    }
290
-
291
-    /**
292
-     * @internal You should not use this directly from another application
293
-     *
294
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsY
295
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsZ
296
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
297
-     * @throws SodiumException
298
-     * @throws TypeError
299
-     */
300
-    public static function edwards_to_montgomery(
301
-        ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsY,
302
-        ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsZ
303
-    ) {
304
-        $tempX = self::fe_add($edwardsZ, $edwardsY);
305
-        $tempZ = self::fe_sub($edwardsZ, $edwardsY);
306
-        $tempZ = self::fe_invert($tempZ);
307
-        return self::fe_mul($tempX, $tempZ);
308
-    }
309
-
310
-    /**
311
-     * @internal You should not use this directly from another application
312
-     *
313
-     * @param string $n
314
-     * @return string
315
-     * @throws SodiumException
316
-     * @throws TypeError
317
-     */
318
-    public static function crypto_scalarmult_curve25519_ref10_base($n)
319
-    {
320
-        # for (i = 0;i < 32;++i) e[i] = n[i];
321
-        $e = '' . $n;
322
-
323
-        # e[0] &= 248;
324
-        $e[0] = self::intToChr(
325
-            self::chrToInt($e[0]) & 248
326
-        );
327
-
328
-        # e[31] &= 127;
329
-        # e[31] |= 64;
330
-        $e[31] = self::intToChr(
331
-            (self::chrToInt($e[31]) & 127) | 64
332
-        );
333
-
334
-        $A = self::ge_scalarmult_base($e);
335
-        if (
336
-            !($A->Y instanceof ParagonIE_Sodium_Core32_Curve25519_Fe)
337
-                ||
338
-            !($A->Z instanceof ParagonIE_Sodium_Core32_Curve25519_Fe)
339
-        ) {
340
-            throw new TypeError('Null points encountered');
341
-        }
342
-        $pk = self::edwards_to_montgomery($A->Y, $A->Z);
343
-        return self::fe_tobytes($pk);
344
-    }
12
+	/**
13
+	 * Alters the objects passed to this method in place.
14
+	 *
15
+	 * @internal You should not use this directly from another application
16
+	 *
17
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
18
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
19
+	 * @param int $b
20
+	 * @return void
21
+	 * @throws SodiumException
22
+	 * @throws TypeError
23
+	 * @psalm-suppress MixedMethodCall
24
+	 */
25
+	public static function fe_cswap(
26
+		ParagonIE_Sodium_Core32_Curve25519_Fe $f,
27
+		ParagonIE_Sodium_Core32_Curve25519_Fe $g,
28
+		$b = 0
29
+	) {
30
+		$f0 = (int) $f[0]->toInt();
31
+		$f1 = (int) $f[1]->toInt();
32
+		$f2 = (int) $f[2]->toInt();
33
+		$f3 = (int) $f[3]->toInt();
34
+		$f4 = (int) $f[4]->toInt();
35
+		$f5 = (int) $f[5]->toInt();
36
+		$f6 = (int) $f[6]->toInt();
37
+		$f7 = (int) $f[7]->toInt();
38
+		$f8 = (int) $f[8]->toInt();
39
+		$f9 = (int) $f[9]->toInt();
40
+		$g0 = (int) $g[0]->toInt();
41
+		$g1 = (int) $g[1]->toInt();
42
+		$g2 = (int) $g[2]->toInt();
43
+		$g3 = (int) $g[3]->toInt();
44
+		$g4 = (int) $g[4]->toInt();
45
+		$g5 = (int) $g[5]->toInt();
46
+		$g6 = (int) $g[6]->toInt();
47
+		$g7 = (int) $g[7]->toInt();
48
+		$g8 = (int) $g[8]->toInt();
49
+		$g9 = (int) $g[9]->toInt();
50
+		$b = -$b;
51
+		/** @var int $x0 */
52
+		$x0 = ($f0 ^ $g0) & $b;
53
+		/** @var int $x1 */
54
+		$x1 = ($f1 ^ $g1) & $b;
55
+		/** @var int $x2 */
56
+		$x2 = ($f2 ^ $g2) & $b;
57
+		/** @var int $x3 */
58
+		$x3 = ($f3 ^ $g3) & $b;
59
+		/** @var int $x4 */
60
+		$x4 = ($f4 ^ $g4) & $b;
61
+		/** @var int $x5 */
62
+		$x5 = ($f5 ^ $g5) & $b;
63
+		/** @var int $x6 */
64
+		$x6 = ($f6 ^ $g6) & $b;
65
+		/** @var int $x7 */
66
+		$x7 = ($f7 ^ $g7) & $b;
67
+		/** @var int $x8 */
68
+		$x8 = ($f8 ^ $g8) & $b;
69
+		/** @var int $x9 */
70
+		$x9 = ($f9 ^ $g9) & $b;
71
+		$f[0] = ParagonIE_Sodium_Core32_Int32::fromInt($f0 ^ $x0);
72
+		$f[1] = ParagonIE_Sodium_Core32_Int32::fromInt($f1 ^ $x1);
73
+		$f[2] = ParagonIE_Sodium_Core32_Int32::fromInt($f2 ^ $x2);
74
+		$f[3] = ParagonIE_Sodium_Core32_Int32::fromInt($f3 ^ $x3);
75
+		$f[4] = ParagonIE_Sodium_Core32_Int32::fromInt($f4 ^ $x4);
76
+		$f[5] = ParagonIE_Sodium_Core32_Int32::fromInt($f5 ^ $x5);
77
+		$f[6] = ParagonIE_Sodium_Core32_Int32::fromInt($f6 ^ $x6);
78
+		$f[7] = ParagonIE_Sodium_Core32_Int32::fromInt($f7 ^ $x7);
79
+		$f[8] = ParagonIE_Sodium_Core32_Int32::fromInt($f8 ^ $x8);
80
+		$f[9] = ParagonIE_Sodium_Core32_Int32::fromInt($f9 ^ $x9);
81
+		$g[0] = ParagonIE_Sodium_Core32_Int32::fromInt($g0 ^ $x0);
82
+		$g[1] = ParagonIE_Sodium_Core32_Int32::fromInt($g1 ^ $x1);
83
+		$g[2] = ParagonIE_Sodium_Core32_Int32::fromInt($g2 ^ $x2);
84
+		$g[3] = ParagonIE_Sodium_Core32_Int32::fromInt($g3 ^ $x3);
85
+		$g[4] = ParagonIE_Sodium_Core32_Int32::fromInt($g4 ^ $x4);
86
+		$g[5] = ParagonIE_Sodium_Core32_Int32::fromInt($g5 ^ $x5);
87
+		$g[6] = ParagonIE_Sodium_Core32_Int32::fromInt($g6 ^ $x6);
88
+		$g[7] = ParagonIE_Sodium_Core32_Int32::fromInt($g7 ^ $x7);
89
+		$g[8] = ParagonIE_Sodium_Core32_Int32::fromInt($g8 ^ $x8);
90
+		$g[9] = ParagonIE_Sodium_Core32_Int32::fromInt($g9 ^ $x9);
91
+	}
92
+
93
+	/**
94
+	 * @internal You should not use this directly from another application
95
+	 *
96
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
97
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
98
+	 * @throws SodiumException
99
+	 * @throws TypeError
100
+	 * @psalm-suppress MixedAssignment
101
+	 * @psalm-suppress MixedMethodCall
102
+	 */
103
+	public static function fe_mul121666(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
104
+	{
105
+		/** @var array<int, ParagonIE_Sodium_Core32_Int64> $h */
106
+		$h = array();
107
+		for ($i = 0; $i < 10; ++$i) {
108
+			$h[$i] = $f[$i]->toInt64()->mulInt(121666, 17);
109
+		}
110
+
111
+		$carry9 = $h[9]->addInt(1 << 24)->shiftRight(25);
112
+		$h[0] = $h[0]->addInt64($carry9->mulInt(19, 5));
113
+		$h[9] = $h[9]->subInt64($carry9->shiftLeft(25));
114
+
115
+		$carry1 = $h[1]->addInt(1 << 24)->shiftRight(25);
116
+		$h[2] = $h[2]->addInt64($carry1);
117
+		$h[1] = $h[1]->subInt64($carry1->shiftLeft(25));
118
+
119
+		$carry3 = $h[3]->addInt(1 << 24)->shiftRight(25);
120
+		$h[4] = $h[4]->addInt64($carry3);
121
+		$h[3] = $h[3]->subInt64($carry3->shiftLeft(25));
122
+
123
+		$carry5 = $h[5]->addInt(1 << 24)->shiftRight(25);
124
+		$h[6] = $h[6]->addInt64($carry5);
125
+		$h[5] = $h[5]->subInt64($carry5->shiftLeft(25));
126
+
127
+		$carry7 = $h[7]->addInt(1 << 24)->shiftRight(25);
128
+		$h[8] = $h[8]->addInt64($carry7);
129
+		$h[7] = $h[7]->subInt64($carry7->shiftLeft(25));
130
+
131
+		$carry0 = $h[0]->addInt(1 << 25)->shiftRight(26);
132
+		$h[1] = $h[1]->addInt64($carry0);
133
+		$h[0] = $h[0]->subInt64($carry0->shiftLeft(26));
134
+
135
+		$carry2 = $h[2]->addInt(1 << 25)->shiftRight(26);
136
+		$h[3] = $h[3]->addInt64($carry2);
137
+		$h[2] = $h[2]->subInt64($carry2->shiftLeft(26));
138
+
139
+		$carry4 = $h[4]->addInt(1 << 25)->shiftRight(26);
140
+		$h[5] = $h[5]->addInt64($carry4);
141
+		$h[4] = $h[4]->subInt64($carry4->shiftLeft(26));
142
+
143
+		$carry6 = $h[6]->addInt(1 << 25)->shiftRight(26);
144
+		$h[7] = $h[7]->addInt64($carry6);
145
+		$h[6] = $h[6]->subInt64($carry6->shiftLeft(26));
146
+
147
+		$carry8 = $h[8]->addInt(1 << 25)->shiftRight(26);
148
+		$h[9] = $h[9]->addInt64($carry8);
149
+		$h[8] = $h[8]->subInt64($carry8->shiftLeft(26));
150
+
151
+		for ($i = 0; $i < 10; ++$i) {
152
+			$h[$i] = $h[$i]->toInt32();
153
+		}
154
+		/** @var array<int, ParagonIE_Sodium_Core32_Int32> $h2 */
155
+		$h2 = $h;
156
+		return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($h2);
157
+	}
158
+
159
+	/**
160
+	 * @internal You should not use this directly from another application
161
+	 *
162
+	 * Inline comments preceded by # are from libsodium's ref10 code.
163
+	 *
164
+	 * @param string $n
165
+	 * @param string $p
166
+	 * @return string
167
+	 * @throws SodiumException
168
+	 * @throws TypeError
169
+	 */
170
+	public static function crypto_scalarmult_curve25519_ref10($n, $p)
171
+	{
172
+		# for (i = 0;i < 32;++i) e[i] = n[i];
173
+		$e = '' . $n;
174
+		# e[0] &= 248;
175
+		$e[0] = self::intToChr(
176
+			self::chrToInt($e[0]) & 248
177
+		);
178
+		# e[31] &= 127;
179
+		# e[31] |= 64;
180
+		$e[31] = self::intToChr(
181
+			(self::chrToInt($e[31]) & 127) | 64
182
+		);
183
+		# fe_frombytes(x1,p);
184
+		$x1 = self::fe_frombytes($p);
185
+		# fe_1(x2);
186
+		$x2 = self::fe_1();
187
+		# fe_0(z2);
188
+		$z2 = self::fe_0();
189
+		# fe_copy(x3,x1);
190
+		$x3 = self::fe_copy($x1);
191
+		# fe_1(z3);
192
+		$z3 = self::fe_1();
193
+
194
+		# swap = 0;
195
+		/** @var int $swap */
196
+		$swap = 0;
197
+
198
+		# for (pos = 254;pos >= 0;--pos) {
199
+		for ($pos = 254; $pos >= 0; --$pos) {
200
+			# b = e[pos / 8] >> (pos & 7);
201
+			/** @var int $b */
202
+			$b = self::chrToInt(
203
+					$e[(int) floor($pos / 8)]
204
+				) >> ($pos & 7);
205
+			# b &= 1;
206
+			$b &= 1;
207
+
208
+			# swap ^= b;
209
+			$swap ^= $b;
210
+
211
+			# fe_cswap(x2,x3,swap);
212
+			self::fe_cswap($x2, $x3, $swap);
213
+
214
+			# fe_cswap(z2,z3,swap);
215
+			self::fe_cswap($z2, $z3, $swap);
216
+
217
+			# swap = b;
218
+			/** @var int $swap */
219
+			$swap = $b;
220
+
221
+			# fe_sub(tmp0,x3,z3);
222
+			$tmp0 = self::fe_sub($x3, $z3);
223
+
224
+			# fe_sub(tmp1,x2,z2);
225
+			$tmp1 = self::fe_sub($x2, $z2);
226
+
227
+			# fe_add(x2,x2,z2);
228
+			$x2 = self::fe_add($x2, $z2);
229
+
230
+			# fe_add(z2,x3,z3);
231
+			$z2 = self::fe_add($x3, $z3);
232
+
233
+			# fe_mul(z3,tmp0,x2);
234
+			$z3 = self::fe_mul($tmp0, $x2);
235
+
236
+			# fe_mul(z2,z2,tmp1);
237
+			$z2 = self::fe_mul($z2, $tmp1);
238
+
239
+			# fe_sq(tmp0,tmp1);
240
+			$tmp0 = self::fe_sq($tmp1);
241
+
242
+			# fe_sq(tmp1,x2);
243
+			$tmp1 = self::fe_sq($x2);
244
+
245
+			# fe_add(x3,z3,z2);
246
+			$x3 = self::fe_add($z3, $z2);
247
+
248
+			# fe_sub(z2,z3,z2);
249
+			$z2 = self::fe_sub($z3, $z2);
250
+
251
+			# fe_mul(x2,tmp1,tmp0);
252
+			$x2 = self::fe_mul($tmp1, $tmp0);
253
+
254
+			# fe_sub(tmp1,tmp1,tmp0);
255
+			$tmp1 = self::fe_sub($tmp1, $tmp0);
256
+
257
+			# fe_sq(z2,z2);
258
+			$z2 = self::fe_sq($z2);
259
+
260
+			# fe_mul121666(z3,tmp1);
261
+			$z3 = self::fe_mul121666($tmp1);
262
+
263
+			# fe_sq(x3,x3);
264
+			$x3 = self::fe_sq($x3);
265
+
266
+			# fe_add(tmp0,tmp0,z3);
267
+			$tmp0 = self::fe_add($tmp0, $z3);
268
+
269
+			# fe_mul(z3,x1,z2);
270
+			$z3 = self::fe_mul($x1, $z2);
271
+
272
+			# fe_mul(z2,tmp1,tmp0);
273
+			$z2 = self::fe_mul($tmp1, $tmp0);
274
+		}
275
+
276
+		# fe_cswap(x2,x3,swap);
277
+		self::fe_cswap($x2, $x3, $swap);
278
+
279
+		# fe_cswap(z2,z3,swap);
280
+		self::fe_cswap($z2, $z3, $swap);
281
+
282
+		# fe_invert(z2,z2);
283
+		$z2 = self::fe_invert($z2);
284
+
285
+		# fe_mul(x2,x2,z2);
286
+		$x2 = self::fe_mul($x2, $z2);
287
+		# fe_tobytes(q,x2);
288
+		return (string) self::fe_tobytes($x2);
289
+	}
290
+
291
+	/**
292
+	 * @internal You should not use this directly from another application
293
+	 *
294
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsY
295
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsZ
296
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
297
+	 * @throws SodiumException
298
+	 * @throws TypeError
299
+	 */
300
+	public static function edwards_to_montgomery(
301
+		ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsY,
302
+		ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsZ
303
+	) {
304
+		$tempX = self::fe_add($edwardsZ, $edwardsY);
305
+		$tempZ = self::fe_sub($edwardsZ, $edwardsY);
306
+		$tempZ = self::fe_invert($tempZ);
307
+		return self::fe_mul($tempX, $tempZ);
308
+	}
309
+
310
+	/**
311
+	 * @internal You should not use this directly from another application
312
+	 *
313
+	 * @param string $n
314
+	 * @return string
315
+	 * @throws SodiumException
316
+	 * @throws TypeError
317
+	 */
318
+	public static function crypto_scalarmult_curve25519_ref10_base($n)
319
+	{
320
+		# for (i = 0;i < 32;++i) e[i] = n[i];
321
+		$e = '' . $n;
322
+
323
+		# e[0] &= 248;
324
+		$e[0] = self::intToChr(
325
+			self::chrToInt($e[0]) & 248
326
+		);
327
+
328
+		# e[31] &= 127;
329
+		# e[31] |= 64;
330
+		$e[31] = self::intToChr(
331
+			(self::chrToInt($e[31]) & 127) | 64
332
+		);
333
+
334
+		$A = self::ge_scalarmult_base($e);
335
+		if (
336
+			!($A->Y instanceof ParagonIE_Sodium_Core32_Curve25519_Fe)
337
+				||
338
+			!($A->Z instanceof ParagonIE_Sodium_Core32_Curve25519_Fe)
339
+		) {
340
+			throw new TypeError('Null points encountered');
341
+		}
342
+		$pk = self::edwards_to_montgomery($A->Y, $A->Z);
343
+		return self::fe_tobytes($pk);
344
+	}
345 345
 }
Please login to merge, or discard this patch.
Spacing   +137 added lines, -137 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core32_X25519', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core32_X25519', false ) ) {
4 4
     return;
5 5
 }
6 6
 
@@ -27,67 +27,67 @@  discard block
 block discarded – undo
27 27
         ParagonIE_Sodium_Core32_Curve25519_Fe $g,
28 28
         $b = 0
29 29
     ) {
30
-        $f0 = (int) $f[0]->toInt();
31
-        $f1 = (int) $f[1]->toInt();
32
-        $f2 = (int) $f[2]->toInt();
33
-        $f3 = (int) $f[3]->toInt();
34
-        $f4 = (int) $f[4]->toInt();
35
-        $f5 = (int) $f[5]->toInt();
36
-        $f6 = (int) $f[6]->toInt();
37
-        $f7 = (int) $f[7]->toInt();
38
-        $f8 = (int) $f[8]->toInt();
39
-        $f9 = (int) $f[9]->toInt();
40
-        $g0 = (int) $g[0]->toInt();
41
-        $g1 = (int) $g[1]->toInt();
42
-        $g2 = (int) $g[2]->toInt();
43
-        $g3 = (int) $g[3]->toInt();
44
-        $g4 = (int) $g[4]->toInt();
45
-        $g5 = (int) $g[5]->toInt();
46
-        $g6 = (int) $g[6]->toInt();
47
-        $g7 = (int) $g[7]->toInt();
48
-        $g8 = (int) $g[8]->toInt();
49
-        $g9 = (int) $g[9]->toInt();
30
+        $f0 = (int)$f[ 0 ]->toInt();
31
+        $f1 = (int)$f[ 1 ]->toInt();
32
+        $f2 = (int)$f[ 2 ]->toInt();
33
+        $f3 = (int)$f[ 3 ]->toInt();
34
+        $f4 = (int)$f[ 4 ]->toInt();
35
+        $f5 = (int)$f[ 5 ]->toInt();
36
+        $f6 = (int)$f[ 6 ]->toInt();
37
+        $f7 = (int)$f[ 7 ]->toInt();
38
+        $f8 = (int)$f[ 8 ]->toInt();
39
+        $f9 = (int)$f[ 9 ]->toInt();
40
+        $g0 = (int)$g[ 0 ]->toInt();
41
+        $g1 = (int)$g[ 1 ]->toInt();
42
+        $g2 = (int)$g[ 2 ]->toInt();
43
+        $g3 = (int)$g[ 3 ]->toInt();
44
+        $g4 = (int)$g[ 4 ]->toInt();
45
+        $g5 = (int)$g[ 5 ]->toInt();
46
+        $g6 = (int)$g[ 6 ]->toInt();
47
+        $g7 = (int)$g[ 7 ]->toInt();
48
+        $g8 = (int)$g[ 8 ]->toInt();
49
+        $g9 = (int)$g[ 9 ]->toInt();
50 50
         $b = -$b;
51 51
         /** @var int $x0 */
52
-        $x0 = ($f0 ^ $g0) & $b;
52
+        $x0 = ( $f0 ^ $g0 ) & $b;
53 53
         /** @var int $x1 */
54
-        $x1 = ($f1 ^ $g1) & $b;
54
+        $x1 = ( $f1 ^ $g1 ) & $b;
55 55
         /** @var int $x2 */
56
-        $x2 = ($f2 ^ $g2) & $b;
56
+        $x2 = ( $f2 ^ $g2 ) & $b;
57 57
         /** @var int $x3 */
58
-        $x3 = ($f3 ^ $g3) & $b;
58
+        $x3 = ( $f3 ^ $g3 ) & $b;
59 59
         /** @var int $x4 */
60
-        $x4 = ($f4 ^ $g4) & $b;
60
+        $x4 = ( $f4 ^ $g4 ) & $b;
61 61
         /** @var int $x5 */
62
-        $x5 = ($f5 ^ $g5) & $b;
62
+        $x5 = ( $f5 ^ $g5 ) & $b;
63 63
         /** @var int $x6 */
64
-        $x6 = ($f6 ^ $g6) & $b;
64
+        $x6 = ( $f6 ^ $g6 ) & $b;
65 65
         /** @var int $x7 */
66
-        $x7 = ($f7 ^ $g7) & $b;
66
+        $x7 = ( $f7 ^ $g7 ) & $b;
67 67
         /** @var int $x8 */
68
-        $x8 = ($f8 ^ $g8) & $b;
68
+        $x8 = ( $f8 ^ $g8 ) & $b;
69 69
         /** @var int $x9 */
70
-        $x9 = ($f9 ^ $g9) & $b;
71
-        $f[0] = ParagonIE_Sodium_Core32_Int32::fromInt($f0 ^ $x0);
72
-        $f[1] = ParagonIE_Sodium_Core32_Int32::fromInt($f1 ^ $x1);
73
-        $f[2] = ParagonIE_Sodium_Core32_Int32::fromInt($f2 ^ $x2);
74
-        $f[3] = ParagonIE_Sodium_Core32_Int32::fromInt($f3 ^ $x3);
75
-        $f[4] = ParagonIE_Sodium_Core32_Int32::fromInt($f4 ^ $x4);
76
-        $f[5] = ParagonIE_Sodium_Core32_Int32::fromInt($f5 ^ $x5);
77
-        $f[6] = ParagonIE_Sodium_Core32_Int32::fromInt($f6 ^ $x6);
78
-        $f[7] = ParagonIE_Sodium_Core32_Int32::fromInt($f7 ^ $x7);
79
-        $f[8] = ParagonIE_Sodium_Core32_Int32::fromInt($f8 ^ $x8);
80
-        $f[9] = ParagonIE_Sodium_Core32_Int32::fromInt($f9 ^ $x9);
81
-        $g[0] = ParagonIE_Sodium_Core32_Int32::fromInt($g0 ^ $x0);
82
-        $g[1] = ParagonIE_Sodium_Core32_Int32::fromInt($g1 ^ $x1);
83
-        $g[2] = ParagonIE_Sodium_Core32_Int32::fromInt($g2 ^ $x2);
84
-        $g[3] = ParagonIE_Sodium_Core32_Int32::fromInt($g3 ^ $x3);
85
-        $g[4] = ParagonIE_Sodium_Core32_Int32::fromInt($g4 ^ $x4);
86
-        $g[5] = ParagonIE_Sodium_Core32_Int32::fromInt($g5 ^ $x5);
87
-        $g[6] = ParagonIE_Sodium_Core32_Int32::fromInt($g6 ^ $x6);
88
-        $g[7] = ParagonIE_Sodium_Core32_Int32::fromInt($g7 ^ $x7);
89
-        $g[8] = ParagonIE_Sodium_Core32_Int32::fromInt($g8 ^ $x8);
90
-        $g[9] = ParagonIE_Sodium_Core32_Int32::fromInt($g9 ^ $x9);
70
+        $x9 = ( $f9 ^ $g9 ) & $b;
71
+        $f[ 0 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $f0 ^ $x0 );
72
+        $f[ 1 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $f1 ^ $x1 );
73
+        $f[ 2 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $f2 ^ $x2 );
74
+        $f[ 3 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $f3 ^ $x3 );
75
+        $f[ 4 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $f4 ^ $x4 );
76
+        $f[ 5 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $f5 ^ $x5 );
77
+        $f[ 6 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $f6 ^ $x6 );
78
+        $f[ 7 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $f7 ^ $x7 );
79
+        $f[ 8 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $f8 ^ $x8 );
80
+        $f[ 9 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $f9 ^ $x9 );
81
+        $g[ 0 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $g0 ^ $x0 );
82
+        $g[ 1 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $g1 ^ $x1 );
83
+        $g[ 2 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $g2 ^ $x2 );
84
+        $g[ 3 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $g3 ^ $x3 );
85
+        $g[ 4 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $g4 ^ $x4 );
86
+        $g[ 5 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $g5 ^ $x5 );
87
+        $g[ 6 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $g6 ^ $x6 );
88
+        $g[ 7 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $g7 ^ $x7 );
89
+        $g[ 8 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $g8 ^ $x8 );
90
+        $g[ 9 ] = ParagonIE_Sodium_Core32_Int32::fromInt( $g9 ^ $x9 );
91 91
     }
92 92
 
93 93
     /**
@@ -100,60 +100,60 @@  discard block
 block discarded – undo
100 100
      * @psalm-suppress MixedAssignment
101 101
      * @psalm-suppress MixedMethodCall
102 102
      */
103
-    public static function fe_mul121666(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
103
+    public static function fe_mul121666( ParagonIE_Sodium_Core32_Curve25519_Fe $f )
104 104
     {
105 105
         /** @var array<int, ParagonIE_Sodium_Core32_Int64> $h */
106 106
         $h = array();
107
-        for ($i = 0; $i < 10; ++$i) {
108
-            $h[$i] = $f[$i]->toInt64()->mulInt(121666, 17);
107
+        for ( $i = 0; $i < 10; ++$i ) {
108
+            $h[ $i ] = $f[ $i ]->toInt64()->mulInt( 121666, 17 );
109 109
         }
110 110
 
111
-        $carry9 = $h[9]->addInt(1 << 24)->shiftRight(25);
112
-        $h[0] = $h[0]->addInt64($carry9->mulInt(19, 5));
113
-        $h[9] = $h[9]->subInt64($carry9->shiftLeft(25));
111
+        $carry9 = $h[ 9 ]->addInt( 1 << 24 )->shiftRight( 25 );
112
+        $h[ 0 ] = $h[ 0 ]->addInt64( $carry9->mulInt( 19, 5 ) );
113
+        $h[ 9 ] = $h[ 9 ]->subInt64( $carry9->shiftLeft( 25 ) );
114 114
 
115
-        $carry1 = $h[1]->addInt(1 << 24)->shiftRight(25);
116
-        $h[2] = $h[2]->addInt64($carry1);
117
-        $h[1] = $h[1]->subInt64($carry1->shiftLeft(25));
115
+        $carry1 = $h[ 1 ]->addInt( 1 << 24 )->shiftRight( 25 );
116
+        $h[ 2 ] = $h[ 2 ]->addInt64( $carry1 );
117
+        $h[ 1 ] = $h[ 1 ]->subInt64( $carry1->shiftLeft( 25 ) );
118 118
 
119
-        $carry3 = $h[3]->addInt(1 << 24)->shiftRight(25);
120
-        $h[4] = $h[4]->addInt64($carry3);
121
-        $h[3] = $h[3]->subInt64($carry3->shiftLeft(25));
119
+        $carry3 = $h[ 3 ]->addInt( 1 << 24 )->shiftRight( 25 );
120
+        $h[ 4 ] = $h[ 4 ]->addInt64( $carry3 );
121
+        $h[ 3 ] = $h[ 3 ]->subInt64( $carry3->shiftLeft( 25 ) );
122 122
 
123
-        $carry5 = $h[5]->addInt(1 << 24)->shiftRight(25);
124
-        $h[6] = $h[6]->addInt64($carry5);
125
-        $h[5] = $h[5]->subInt64($carry5->shiftLeft(25));
123
+        $carry5 = $h[ 5 ]->addInt( 1 << 24 )->shiftRight( 25 );
124
+        $h[ 6 ] = $h[ 6 ]->addInt64( $carry5 );
125
+        $h[ 5 ] = $h[ 5 ]->subInt64( $carry5->shiftLeft( 25 ) );
126 126
 
127
-        $carry7 = $h[7]->addInt(1 << 24)->shiftRight(25);
128
-        $h[8] = $h[8]->addInt64($carry7);
129
-        $h[7] = $h[7]->subInt64($carry7->shiftLeft(25));
127
+        $carry7 = $h[ 7 ]->addInt( 1 << 24 )->shiftRight( 25 );
128
+        $h[ 8 ] = $h[ 8 ]->addInt64( $carry7 );
129
+        $h[ 7 ] = $h[ 7 ]->subInt64( $carry7->shiftLeft( 25 ) );
130 130
 
131
-        $carry0 = $h[0]->addInt(1 << 25)->shiftRight(26);
132
-        $h[1] = $h[1]->addInt64($carry0);
133
-        $h[0] = $h[0]->subInt64($carry0->shiftLeft(26));
131
+        $carry0 = $h[ 0 ]->addInt( 1 << 25 )->shiftRight( 26 );
132
+        $h[ 1 ] = $h[ 1 ]->addInt64( $carry0 );
133
+        $h[ 0 ] = $h[ 0 ]->subInt64( $carry0->shiftLeft( 26 ) );
134 134
 
135
-        $carry2 = $h[2]->addInt(1 << 25)->shiftRight(26);
136
-        $h[3] = $h[3]->addInt64($carry2);
137
-        $h[2] = $h[2]->subInt64($carry2->shiftLeft(26));
135
+        $carry2 = $h[ 2 ]->addInt( 1 << 25 )->shiftRight( 26 );
136
+        $h[ 3 ] = $h[ 3 ]->addInt64( $carry2 );
137
+        $h[ 2 ] = $h[ 2 ]->subInt64( $carry2->shiftLeft( 26 ) );
138 138
 
139
-        $carry4 = $h[4]->addInt(1 << 25)->shiftRight(26);
140
-        $h[5] = $h[5]->addInt64($carry4);
141
-        $h[4] = $h[4]->subInt64($carry4->shiftLeft(26));
139
+        $carry4 = $h[ 4 ]->addInt( 1 << 25 )->shiftRight( 26 );
140
+        $h[ 5 ] = $h[ 5 ]->addInt64( $carry4 );
141
+        $h[ 4 ] = $h[ 4 ]->subInt64( $carry4->shiftLeft( 26 ) );
142 142
 
143
-        $carry6 = $h[6]->addInt(1 << 25)->shiftRight(26);
144
-        $h[7] = $h[7]->addInt64($carry6);
145
-        $h[6] = $h[6]->subInt64($carry6->shiftLeft(26));
143
+        $carry6 = $h[ 6 ]->addInt( 1 << 25 )->shiftRight( 26 );
144
+        $h[ 7 ] = $h[ 7 ]->addInt64( $carry6 );
145
+        $h[ 6 ] = $h[ 6 ]->subInt64( $carry6->shiftLeft( 26 ) );
146 146
 
147
-        $carry8 = $h[8]->addInt(1 << 25)->shiftRight(26);
148
-        $h[9] = $h[9]->addInt64($carry8);
149
-        $h[8] = $h[8]->subInt64($carry8->shiftLeft(26));
147
+        $carry8 = $h[ 8 ]->addInt( 1 << 25 )->shiftRight( 26 );
148
+        $h[ 9 ] = $h[ 9 ]->addInt64( $carry8 );
149
+        $h[ 8 ] = $h[ 8 ]->subInt64( $carry8->shiftLeft( 26 ) );
150 150
 
151
-        for ($i = 0; $i < 10; ++$i) {
152
-            $h[$i] = $h[$i]->toInt32();
151
+        for ( $i = 0; $i < 10; ++$i ) {
152
+            $h[ $i ] = $h[ $i ]->toInt32();
153 153
         }
154 154
         /** @var array<int, ParagonIE_Sodium_Core32_Int32> $h2 */
155 155
         $h2 = $h;
156
-        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($h2);
156
+        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray( $h2 );
157 157
     }
158 158
 
159 159
     /**
@@ -167,27 +167,27 @@  discard block
 block discarded – undo
167 167
      * @throws SodiumException
168 168
      * @throws TypeError
169 169
      */
170
-    public static function crypto_scalarmult_curve25519_ref10($n, $p)
170
+    public static function crypto_scalarmult_curve25519_ref10( $n, $p )
171 171
     {
172 172
         # for (i = 0;i < 32;++i) e[i] = n[i];
173 173
         $e = '' . $n;
174 174
         # e[0] &= 248;
175
-        $e[0] = self::intToChr(
176
-            self::chrToInt($e[0]) & 248
175
+        $e[ 0 ] = self::intToChr(
176
+            self::chrToInt( $e[ 0 ] ) & 248
177 177
         );
178 178
         # e[31] &= 127;
179 179
         # e[31] |= 64;
180
-        $e[31] = self::intToChr(
181
-            (self::chrToInt($e[31]) & 127) | 64
180
+        $e[ 31 ] = self::intToChr(
181
+            ( self::chrToInt( $e[ 31 ] ) & 127 ) | 64
182 182
         );
183 183
         # fe_frombytes(x1,p);
184
-        $x1 = self::fe_frombytes($p);
184
+        $x1 = self::fe_frombytes( $p );
185 185
         # fe_1(x2);
186 186
         $x2 = self::fe_1();
187 187
         # fe_0(z2);
188 188
         $z2 = self::fe_0();
189 189
         # fe_copy(x3,x1);
190
-        $x3 = self::fe_copy($x1);
190
+        $x3 = self::fe_copy( $x1 );
191 191
         # fe_1(z3);
192 192
         $z3 = self::fe_1();
193 193
 
@@ -196,12 +196,12 @@  discard block
 block discarded – undo
196 196
         $swap = 0;
197 197
 
198 198
         # for (pos = 254;pos >= 0;--pos) {
199
-        for ($pos = 254; $pos >= 0; --$pos) {
199
+        for ( $pos = 254; $pos >= 0; --$pos ) {
200 200
             # b = e[pos / 8] >> (pos & 7);
201 201
             /** @var int $b */
202 202
             $b = self::chrToInt(
203
-                    $e[(int) floor($pos / 8)]
204
-                ) >> ($pos & 7);
203
+                    $e[ (int)floor( $pos / 8 ) ]
204
+                ) >> ( $pos & 7 );
205 205
             # b &= 1;
206 206
             $b &= 1;
207 207
 
@@ -209,83 +209,83 @@  discard block
 block discarded – undo
209 209
             $swap ^= $b;
210 210
 
211 211
             # fe_cswap(x2,x3,swap);
212
-            self::fe_cswap($x2, $x3, $swap);
212
+            self::fe_cswap( $x2, $x3, $swap );
213 213
 
214 214
             # fe_cswap(z2,z3,swap);
215
-            self::fe_cswap($z2, $z3, $swap);
215
+            self::fe_cswap( $z2, $z3, $swap );
216 216
 
217 217
             # swap = b;
218 218
             /** @var int $swap */
219 219
             $swap = $b;
220 220
 
221 221
             # fe_sub(tmp0,x3,z3);
222
-            $tmp0 = self::fe_sub($x3, $z3);
222
+            $tmp0 = self::fe_sub( $x3, $z3 );
223 223
 
224 224
             # fe_sub(tmp1,x2,z2);
225
-            $tmp1 = self::fe_sub($x2, $z2);
225
+            $tmp1 = self::fe_sub( $x2, $z2 );
226 226
 
227 227
             # fe_add(x2,x2,z2);
228
-            $x2 = self::fe_add($x2, $z2);
228
+            $x2 = self::fe_add( $x2, $z2 );
229 229
 
230 230
             # fe_add(z2,x3,z3);
231
-            $z2 = self::fe_add($x3, $z3);
231
+            $z2 = self::fe_add( $x3, $z3 );
232 232
 
233 233
             # fe_mul(z3,tmp0,x2);
234
-            $z3 = self::fe_mul($tmp0, $x2);
234
+            $z3 = self::fe_mul( $tmp0, $x2 );
235 235
 
236 236
             # fe_mul(z2,z2,tmp1);
237
-            $z2 = self::fe_mul($z2, $tmp1);
237
+            $z2 = self::fe_mul( $z2, $tmp1 );
238 238
 
239 239
             # fe_sq(tmp0,tmp1);
240
-            $tmp0 = self::fe_sq($tmp1);
240
+            $tmp0 = self::fe_sq( $tmp1 );
241 241
 
242 242
             # fe_sq(tmp1,x2);
243
-            $tmp1 = self::fe_sq($x2);
243
+            $tmp1 = self::fe_sq( $x2 );
244 244
 
245 245
             # fe_add(x3,z3,z2);
246
-            $x3 = self::fe_add($z3, $z2);
246
+            $x3 = self::fe_add( $z3, $z2 );
247 247
 
248 248
             # fe_sub(z2,z3,z2);
249
-            $z2 = self::fe_sub($z3, $z2);
249
+            $z2 = self::fe_sub( $z3, $z2 );
250 250
 
251 251
             # fe_mul(x2,tmp1,tmp0);
252
-            $x2 = self::fe_mul($tmp1, $tmp0);
252
+            $x2 = self::fe_mul( $tmp1, $tmp0 );
253 253
 
254 254
             # fe_sub(tmp1,tmp1,tmp0);
255
-            $tmp1 = self::fe_sub($tmp1, $tmp0);
255
+            $tmp1 = self::fe_sub( $tmp1, $tmp0 );
256 256
 
257 257
             # fe_sq(z2,z2);
258
-            $z2 = self::fe_sq($z2);
258
+            $z2 = self::fe_sq( $z2 );
259 259
 
260 260
             # fe_mul121666(z3,tmp1);
261
-            $z3 = self::fe_mul121666($tmp1);
261
+            $z3 = self::fe_mul121666( $tmp1 );
262 262
 
263 263
             # fe_sq(x3,x3);
264
-            $x3 = self::fe_sq($x3);
264
+            $x3 = self::fe_sq( $x3 );
265 265
 
266 266
             # fe_add(tmp0,tmp0,z3);
267
-            $tmp0 = self::fe_add($tmp0, $z3);
267
+            $tmp0 = self::fe_add( $tmp0, $z3 );
268 268
 
269 269
             # fe_mul(z3,x1,z2);
270
-            $z3 = self::fe_mul($x1, $z2);
270
+            $z3 = self::fe_mul( $x1, $z2 );
271 271
 
272 272
             # fe_mul(z2,tmp1,tmp0);
273
-            $z2 = self::fe_mul($tmp1, $tmp0);
273
+            $z2 = self::fe_mul( $tmp1, $tmp0 );
274 274
         }
275 275
 
276 276
         # fe_cswap(x2,x3,swap);
277
-        self::fe_cswap($x2, $x3, $swap);
277
+        self::fe_cswap( $x2, $x3, $swap );
278 278
 
279 279
         # fe_cswap(z2,z3,swap);
280
-        self::fe_cswap($z2, $z3, $swap);
280
+        self::fe_cswap( $z2, $z3, $swap );
281 281
 
282 282
         # fe_invert(z2,z2);
283
-        $z2 = self::fe_invert($z2);
283
+        $z2 = self::fe_invert( $z2 );
284 284
 
285 285
         # fe_mul(x2,x2,z2);
286
-        $x2 = self::fe_mul($x2, $z2);
286
+        $x2 = self::fe_mul( $x2, $z2 );
287 287
         # fe_tobytes(q,x2);
288
-        return (string) self::fe_tobytes($x2);
288
+        return (string)self::fe_tobytes( $x2 );
289 289
     }
290 290
 
291 291
     /**
@@ -301,10 +301,10 @@  discard block
 block discarded – undo
301 301
         ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsY,
302 302
         ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsZ
303 303
     ) {
304
-        $tempX = self::fe_add($edwardsZ, $edwardsY);
305
-        $tempZ = self::fe_sub($edwardsZ, $edwardsY);
306
-        $tempZ = self::fe_invert($tempZ);
307
-        return self::fe_mul($tempX, $tempZ);
304
+        $tempX = self::fe_add( $edwardsZ, $edwardsY );
305
+        $tempZ = self::fe_sub( $edwardsZ, $edwardsY );
306
+        $tempZ = self::fe_invert( $tempZ );
307
+        return self::fe_mul( $tempX, $tempZ );
308 308
     }
309 309
 
310 310
     /**
@@ -315,31 +315,31 @@  discard block
 block discarded – undo
315 315
      * @throws SodiumException
316 316
      * @throws TypeError
317 317
      */
318
-    public static function crypto_scalarmult_curve25519_ref10_base($n)
318
+    public static function crypto_scalarmult_curve25519_ref10_base( $n )
319 319
     {
320 320
         # for (i = 0;i < 32;++i) e[i] = n[i];
321 321
         $e = '' . $n;
322 322
 
323 323
         # e[0] &= 248;
324
-        $e[0] = self::intToChr(
325
-            self::chrToInt($e[0]) & 248
324
+        $e[ 0 ] = self::intToChr(
325
+            self::chrToInt( $e[ 0 ] ) & 248
326 326
         );
327 327
 
328 328
         # e[31] &= 127;
329 329
         # e[31] |= 64;
330
-        $e[31] = self::intToChr(
331
-            (self::chrToInt($e[31]) & 127) | 64
330
+        $e[ 31 ] = self::intToChr(
331
+            ( self::chrToInt( $e[ 31 ] ) & 127 ) | 64
332 332
         );
333 333
 
334
-        $A = self::ge_scalarmult_base($e);
334
+        $A = self::ge_scalarmult_base( $e );
335 335
         if (
336
-            !($A->Y instanceof ParagonIE_Sodium_Core32_Curve25519_Fe)
336
+            ! ( $A->Y instanceof ParagonIE_Sodium_Core32_Curve25519_Fe )
337 337
                 ||
338
-            !($A->Z instanceof ParagonIE_Sodium_Core32_Curve25519_Fe)
338
+            ! ( $A->Z instanceof ParagonIE_Sodium_Core32_Curve25519_Fe )
339 339
         ) {
340
-            throw new TypeError('Null points encountered');
340
+            throw new TypeError( 'Null points encountered' );
341 341
         }
342
-        $pk = self::edwards_to_montgomery($A->Y, $A->Z);
343
-        return self::fe_tobytes($pk);
342
+        $pk = self::edwards_to_montgomery( $A->Y, $A->Z );
343
+        return self::fe_tobytes( $pk );
344 344
     }
345 345
 }
Please login to merge, or discard this patch.
Braces   +4 added lines, -8 removed lines patch added patch discarded remove patch
@@ -7,8 +7,7 @@  discard block
 block discarded – undo
7 7
 /**
8 8
  * Class ParagonIE_Sodium_Core32_X25519
9 9
  */
10
-abstract class ParagonIE_Sodium_Core32_X25519 extends ParagonIE_Sodium_Core32_Curve25519
11
-{
10
+abstract class ParagonIE_Sodium_Core32_X25519 extends ParagonIE_Sodium_Core32_Curve25519 {
12 11
     /**
13 12
      * Alters the objects passed to this method in place.
14 13
      *
@@ -100,8 +99,7 @@  discard block
 block discarded – undo
100 99
      * @psalm-suppress MixedAssignment
101 100
      * @psalm-suppress MixedMethodCall
102 101
      */
103
-    public static function fe_mul121666(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
104
-    {
102
+    public static function fe_mul121666(ParagonIE_Sodium_Core32_Curve25519_Fe $f) {
105 103
         /** @var array<int, ParagonIE_Sodium_Core32_Int64> $h */
106 104
         $h = array();
107 105
         for ($i = 0; $i < 10; ++$i) {
@@ -167,8 +165,7 @@  discard block
 block discarded – undo
167 165
      * @throws SodiumException
168 166
      * @throws TypeError
169 167
      */
170
-    public static function crypto_scalarmult_curve25519_ref10($n, $p)
171
-    {
168
+    public static function crypto_scalarmult_curve25519_ref10($n, $p) {
172 169
         # for (i = 0;i < 32;++i) e[i] = n[i];
173 170
         $e = '' . $n;
174 171
         # e[0] &= 248;
@@ -315,8 +312,7 @@  discard block
 block discarded – undo
315 312
      * @throws SodiumException
316 313
      * @throws TypeError
317 314
      */
318
-    public static function crypto_scalarmult_curve25519_ref10_base($n)
319
-    {
315
+    public static function crypto_scalarmult_curve25519_ref10_base($n) {
320 316
         # for (i = 0;i < 32;++i) e[i] = n[i];
321 317
         $e = '' . $n;
322 318
 
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/Poly1305.php 3 patches
Indentation   +50 added lines, -50 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core32_Poly1305', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -9,55 +9,55 @@  discard block
 block discarded – undo
9 9
  */
10 10
 abstract class ParagonIE_Sodium_Core32_Poly1305 extends ParagonIE_Sodium_Core32_Util
11 11
 {
12
-    const BLOCK_SIZE = 16;
12
+	const BLOCK_SIZE = 16;
13 13
 
14
-    /**
15
-     * @internal You should not use this directly from another application
16
-     *
17
-     * @param string $m
18
-     * @param string $key
19
-     * @return string
20
-     * @throws SodiumException
21
-     * @throws TypeError
22
-     */
23
-    public static function onetimeauth($m, $key)
24
-    {
25
-        if (self::strlen($key) < 32) {
26
-            throw new InvalidArgumentException(
27
-                'Key must be 32 bytes long.'
28
-            );
29
-        }
30
-        $state = new ParagonIE_Sodium_Core32_Poly1305_State(
31
-            self::substr($key, 0, 32)
32
-        );
33
-        return $state
34
-            ->update($m)
35
-            ->finish();
36
-    }
14
+	/**
15
+	 * @internal You should not use this directly from another application
16
+	 *
17
+	 * @param string $m
18
+	 * @param string $key
19
+	 * @return string
20
+	 * @throws SodiumException
21
+	 * @throws TypeError
22
+	 */
23
+	public static function onetimeauth($m, $key)
24
+	{
25
+		if (self::strlen($key) < 32) {
26
+			throw new InvalidArgumentException(
27
+				'Key must be 32 bytes long.'
28
+			);
29
+		}
30
+		$state = new ParagonIE_Sodium_Core32_Poly1305_State(
31
+			self::substr($key, 0, 32)
32
+		);
33
+		return $state
34
+			->update($m)
35
+			->finish();
36
+	}
37 37
 
38
-    /**
39
-     * @internal You should not use this directly from another application
40
-     *
41
-     * @param string $mac
42
-     * @param string $m
43
-     * @param string $key
44
-     * @return bool
45
-     * @throws SodiumException
46
-     * @throws TypeError
47
-     */
48
-    public static function onetimeauth_verify($mac, $m, $key)
49
-    {
50
-        if (self::strlen($key) < 32) {
51
-            throw new InvalidArgumentException(
52
-                'Key must be 32 bytes long.'
53
-            );
54
-        }
55
-        $state = new ParagonIE_Sodium_Core32_Poly1305_State(
56
-            self::substr($key, 0, 32)
57
-        );
58
-        $calc = $state
59
-            ->update($m)
60
-            ->finish();
61
-        return self::verify_16($calc, $mac);
62
-    }
38
+	/**
39
+	 * @internal You should not use this directly from another application
40
+	 *
41
+	 * @param string $mac
42
+	 * @param string $m
43
+	 * @param string $key
44
+	 * @return bool
45
+	 * @throws SodiumException
46
+	 * @throws TypeError
47
+	 */
48
+	public static function onetimeauth_verify($mac, $m, $key)
49
+	{
50
+		if (self::strlen($key) < 32) {
51
+			throw new InvalidArgumentException(
52
+				'Key must be 32 bytes long.'
53
+			);
54
+		}
55
+		$state = new ParagonIE_Sodium_Core32_Poly1305_State(
56
+			self::substr($key, 0, 32)
57
+		);
58
+		$calc = $state
59
+			->update($m)
60
+			->finish();
61
+		return self::verify_16($calc, $mac);
62
+	}
63 63
 }
Please login to merge, or discard this patch.
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core32_Poly1305', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core32_Poly1305', false ) ) {
4 4
     return;
5 5
 }
6 6
 
@@ -20,18 +20,18 @@  discard block
 block discarded – undo
20 20
      * @throws SodiumException
21 21
      * @throws TypeError
22 22
      */
23
-    public static function onetimeauth($m, $key)
23
+    public static function onetimeauth( $m, $key )
24 24
     {
25
-        if (self::strlen($key) < 32) {
25
+        if ( self::strlen( $key ) < 32 ) {
26 26
             throw new InvalidArgumentException(
27 27
                 'Key must be 32 bytes long.'
28 28
             );
29 29
         }
30 30
         $state = new ParagonIE_Sodium_Core32_Poly1305_State(
31
-            self::substr($key, 0, 32)
31
+            self::substr( $key, 0, 32 )
32 32
         );
33 33
         return $state
34
-            ->update($m)
34
+            ->update( $m )
35 35
             ->finish();
36 36
     }
37 37
 
@@ -45,19 +45,19 @@  discard block
 block discarded – undo
45 45
      * @throws SodiumException
46 46
      * @throws TypeError
47 47
      */
48
-    public static function onetimeauth_verify($mac, $m, $key)
48
+    public static function onetimeauth_verify( $mac, $m, $key )
49 49
     {
50
-        if (self::strlen($key) < 32) {
50
+        if ( self::strlen( $key ) < 32 ) {
51 51
             throw new InvalidArgumentException(
52 52
                 'Key must be 32 bytes long.'
53 53
             );
54 54
         }
55 55
         $state = new ParagonIE_Sodium_Core32_Poly1305_State(
56
-            self::substr($key, 0, 32)
56
+            self::substr( $key, 0, 32 )
57 57
         );
58 58
         $calc = $state
59
-            ->update($m)
59
+            ->update( $m )
60 60
             ->finish();
61
-        return self::verify_16($calc, $mac);
61
+        return self::verify_16( $calc, $mac );
62 62
     }
63 63
 }
Please login to merge, or discard this patch.
Braces   +3 added lines, -6 removed lines patch added patch discarded remove patch
@@ -7,8 +7,7 @@  discard block
 block discarded – undo
7 7
 /**
8 8
  * Class ParagonIE_Sodium_Core32_Poly1305
9 9
  */
10
-abstract class ParagonIE_Sodium_Core32_Poly1305 extends ParagonIE_Sodium_Core32_Util
11
-{
10
+abstract class ParagonIE_Sodium_Core32_Poly1305 extends ParagonIE_Sodium_Core32_Util {
12 11
     const BLOCK_SIZE = 16;
13 12
 
14 13
     /**
@@ -20,8 +19,7 @@  discard block
 block discarded – undo
20 19
      * @throws SodiumException
21 20
      * @throws TypeError
22 21
      */
23
-    public static function onetimeauth($m, $key)
24
-    {
22
+    public static function onetimeauth($m, $key) {
25 23
         if (self::strlen($key) < 32) {
26 24
             throw new InvalidArgumentException(
27 25
                 'Key must be 32 bytes long.'
@@ -45,8 +43,7 @@  discard block
 block discarded – undo
45 43
      * @throws SodiumException
46 44
      * @throws TypeError
47 45
      */
48
-    public static function onetimeauth_verify($mac, $m, $key)
49
-    {
46
+    public static function onetimeauth_verify($mac, $m, $key) {
50 47
         if (self::strlen($key) < 32) {
51 48
             throw new InvalidArgumentException(
52 49
                 'Key must be 32 bytes long.'
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/XSalsa20.php 3 patches
Indentation   +45 added lines, -45 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core32_XSalsa20', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -9,49 +9,49 @@  discard block
 block discarded – undo
9 9
  */
10 10
 abstract class ParagonIE_Sodium_Core32_XSalsa20 extends ParagonIE_Sodium_Core32_HSalsa20
11 11
 {
12
-    /**
13
-     * Expand a key and nonce into an xsalsa20 keystream.
14
-     *
15
-     * @internal You should not use this directly from another application
16
-     *
17
-     * @param int $len
18
-     * @param string $nonce
19
-     * @param string $key
20
-     * @return string
21
-     * @throws SodiumException
22
-     * @throws TypeError
23
-     */
24
-    public static function xsalsa20($len, $nonce, $key)
25
-    {
26
-        $ret = self::salsa20(
27
-            $len,
28
-            self::substr($nonce, 16, 8),
29
-            self::hsalsa20($nonce, $key)
30
-        );
31
-        return $ret;
32
-    }
12
+	/**
13
+	 * Expand a key and nonce into an xsalsa20 keystream.
14
+	 *
15
+	 * @internal You should not use this directly from another application
16
+	 *
17
+	 * @param int $len
18
+	 * @param string $nonce
19
+	 * @param string $key
20
+	 * @return string
21
+	 * @throws SodiumException
22
+	 * @throws TypeError
23
+	 */
24
+	public static function xsalsa20($len, $nonce, $key)
25
+	{
26
+		$ret = self::salsa20(
27
+			$len,
28
+			self::substr($nonce, 16, 8),
29
+			self::hsalsa20($nonce, $key)
30
+		);
31
+		return $ret;
32
+	}
33 33
 
34
-    /**
35
-     * Encrypt a string with XSalsa20. Doesn't provide integrity.
36
-     *
37
-     * @internal You should not use this directly from another application
38
-     *
39
-     * @param string $message
40
-     * @param string $nonce
41
-     * @param string $key
42
-     * @return string
43
-     * @throws SodiumException
44
-     * @throws TypeError
45
-     */
46
-    public static function xsalsa20_xor($message, $nonce, $key)
47
-    {
48
-        return self::xorStrings(
49
-            $message,
50
-            self::xsalsa20(
51
-                self::strlen($message),
52
-                $nonce,
53
-                $key
54
-            )
55
-        );
56
-    }
34
+	/**
35
+	 * Encrypt a string with XSalsa20. Doesn't provide integrity.
36
+	 *
37
+	 * @internal You should not use this directly from another application
38
+	 *
39
+	 * @param string $message
40
+	 * @param string $nonce
41
+	 * @param string $key
42
+	 * @return string
43
+	 * @throws SodiumException
44
+	 * @throws TypeError
45
+	 */
46
+	public static function xsalsa20_xor($message, $nonce, $key)
47
+	{
48
+		return self::xorStrings(
49
+			$message,
50
+			self::xsalsa20(
51
+				self::strlen($message),
52
+				$nonce,
53
+				$key
54
+			)
55
+		);
56
+	}
57 57
 }
Please login to merge, or discard this patch.
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core32_XSalsa20', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core32_XSalsa20', false ) ) {
4 4
     return;
5 5
 }
6 6
 
@@ -21,12 +21,12 @@  discard block
 block discarded – undo
21 21
      * @throws SodiumException
22 22
      * @throws TypeError
23 23
      */
24
-    public static function xsalsa20($len, $nonce, $key)
24
+    public static function xsalsa20( $len, $nonce, $key )
25 25
     {
26 26
         $ret = self::salsa20(
27 27
             $len,
28
-            self::substr($nonce, 16, 8),
29
-            self::hsalsa20($nonce, $key)
28
+            self::substr( $nonce, 16, 8 ),
29
+            self::hsalsa20( $nonce, $key )
30 30
         );
31 31
         return $ret;
32 32
     }
@@ -43,12 +43,12 @@  discard block
 block discarded – undo
43 43
      * @throws SodiumException
44 44
      * @throws TypeError
45 45
      */
46
-    public static function xsalsa20_xor($message, $nonce, $key)
46
+    public static function xsalsa20_xor( $message, $nonce, $key )
47 47
     {
48 48
         return self::xorStrings(
49 49
             $message,
50 50
             self::xsalsa20(
51
-                self::strlen($message),
51
+                self::strlen( $message ),
52 52
                 $nonce,
53 53
                 $key
54 54
             )
Please login to merge, or discard this patch.
Braces   +3 added lines, -6 removed lines patch added patch discarded remove patch
@@ -7,8 +7,7 @@  discard block
 block discarded – undo
7 7
 /**
8 8
  * Class ParagonIE_Sodium_Core32_XSalsa20
9 9
  */
10
-abstract class ParagonIE_Sodium_Core32_XSalsa20 extends ParagonIE_Sodium_Core32_HSalsa20
11
-{
10
+abstract class ParagonIE_Sodium_Core32_XSalsa20 extends ParagonIE_Sodium_Core32_HSalsa20 {
12 11
     /**
13 12
      * Expand a key and nonce into an xsalsa20 keystream.
14 13
      *
@@ -21,8 +20,7 @@  discard block
 block discarded – undo
21 20
      * @throws SodiumException
22 21
      * @throws TypeError
23 22
      */
24
-    public static function xsalsa20($len, $nonce, $key)
25
-    {
23
+    public static function xsalsa20($len, $nonce, $key) {
26 24
         $ret = self::salsa20(
27 25
             $len,
28 26
             self::substr($nonce, 16, 8),
@@ -43,8 +41,7 @@  discard block
 block discarded – undo
43 41
      * @throws SodiumException
44 42
      * @throws TypeError
45 43
      */
46
-    public static function xsalsa20_xor($message, $nonce, $key)
47
-    {
44
+    public static function xsalsa20_xor($message, $nonce, $key) {
48 45
         return self::xorStrings(
49 46
             $message,
50 47
             self::xsalsa20(
Please login to merge, or discard this patch.