Completed
Push — develop ( c20624...b2ad9c )
by Zack
15:34
created
vendor/paragonie/sodium_compat/lib/namespaced.php 2 patches
Indentation   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
 require_once dirname(dirname(__FILE__)) . '/autoload.php';
4 4
 
5 5
 if (PHP_VERSION_ID < 50300) {
6
-    return;
6
+	return;
7 7
 }
8 8
 
9 9
 /*
@@ -21,28 +21,28 @@  discard block
 block discarded – undo
21 21
  * $x = Compat::crypto_aead_xchacha20poly1305_encrypt(...$args);
22 22
  */
23 23
 spl_autoload_register(function ($class) {
24
-    if ($class[0] === '\\') {
25
-        $class = substr($class, 1);
26
-    }
27
-    $namespace = 'ParagonIE\\Sodium';
28
-    // Does the class use the namespace prefix?
29
-    $len = strlen($namespace);
30
-    if (strncmp($namespace, $class, $len) !== 0) {
31
-        // no, move to the next registered autoloader
32
-        return false;
33
-    }
24
+	if ($class[0] === '\\') {
25
+		$class = substr($class, 1);
26
+	}
27
+	$namespace = 'ParagonIE\\Sodium';
28
+	// Does the class use the namespace prefix?
29
+	$len = strlen($namespace);
30
+	if (strncmp($namespace, $class, $len) !== 0) {
31
+		// no, move to the next registered autoloader
32
+		return false;
33
+	}
34 34
 
35
-    // Get the relative class name
36
-    $relative_class = substr($class, $len);
35
+	// Get the relative class name
36
+	$relative_class = substr($class, $len);
37 37
 
38
-    // Replace the namespace prefix with the base directory, replace namespace
39
-    // separators with directory separators in the relative class name, append
40
-    // with .php
41
-    $file = dirname(dirname(__FILE__)) . '/namespaced/' . str_replace('\\', '/', $relative_class) . '.php';
42
-    // if the file exists, require it
43
-    if (file_exists($file)) {
44
-        require_once $file;
45
-        return true;
46
-    }
47
-    return false;
38
+	// Replace the namespace prefix with the base directory, replace namespace
39
+	// separators with directory separators in the relative class name, append
40
+	// with .php
41
+	$file = dirname(dirname(__FILE__)) . '/namespaced/' . str_replace('\\', '/', $relative_class) . '.php';
42
+	// if the file exists, require it
43
+	if (file_exists($file)) {
44
+		require_once $file;
45
+		return true;
46
+	}
47
+	return false;
48 48
 });
Please login to merge, or discard this patch.
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -1,8 +1,8 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-require_once dirname(dirname(__FILE__)) . '/autoload.php';
3
+require_once dirname( dirname( __FILE__ ) ) . '/autoload.php';
4 4
 
5
-if (PHP_VERSION_ID < 50300) {
5
+if ( PHP_VERSION_ID < 50300 ) {
6 6
     return;
7 7
 }
8 8
 
@@ -20,27 +20,27 @@  discard block
 block discarded – undo
20 20
  *
21 21
  * $x = Compat::crypto_aead_xchacha20poly1305_encrypt(...$args);
22 22
  */
23
-spl_autoload_register(function ($class) {
24
-    if ($class[0] === '\\') {
25
-        $class = substr($class, 1);
23
+spl_autoload_register( function( $class ) {
24
+    if ( $class[ 0 ] === '\\' ) {
25
+        $class = substr( $class, 1 );
26 26
     }
27 27
     $namespace = 'ParagonIE\\Sodium';
28 28
     // Does the class use the namespace prefix?
29
-    $len = strlen($namespace);
30
-    if (strncmp($namespace, $class, $len) !== 0) {
29
+    $len = strlen( $namespace );
30
+    if ( strncmp( $namespace, $class, $len ) !== 0 ) {
31 31
         // no, move to the next registered autoloader
32 32
         return false;
33 33
     }
34 34
 
35 35
     // Get the relative class name
36
-    $relative_class = substr($class, $len);
36
+    $relative_class = substr( $class, $len );
37 37
 
38 38
     // Replace the namespace prefix with the base directory, replace namespace
39 39
     // separators with directory separators in the relative class name, append
40 40
     // with .php
41
-    $file = dirname(dirname(__FILE__)) . '/namespaced/' . str_replace('\\', '/', $relative_class) . '.php';
41
+    $file = dirname( dirname( __FILE__ ) ) . '/namespaced/' . str_replace( '\\', '/', $relative_class ) . '.php';
42 42
     // if the file exists, require it
43
-    if (file_exists($file)) {
43
+    if ( file_exists( $file ) ) {
44 44
         require_once $file;
45 45
         return true;
46 46
     }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/lib/stream-xchacha20.php 3 patches
Indentation   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -1,43 +1,43 @@
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (!is_callable('sodium_crypto_stream_xchacha20')) {
4
-    /**
5
-     * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20()
6
-     * @param int $len
7
-     * @param string $nonce
8
-     * @param string $key
9
-     * @return string
10
-     * @throws SodiumException
11
-     * @throws TypeError
12
-     */
13
-    function sodium_crypto_stream_xchacha20($len, $nonce, $key)
14
-    {
15
-        return ParagonIE_Sodium_Compat::crypto_stream_xchacha20($len, $nonce, $key, true);
16
-    }
4
+	/**
5
+	 * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20()
6
+	 * @param int $len
7
+	 * @param string $nonce
8
+	 * @param string $key
9
+	 * @return string
10
+	 * @throws SodiumException
11
+	 * @throws TypeError
12
+	 */
13
+	function sodium_crypto_stream_xchacha20($len, $nonce, $key)
14
+	{
15
+		return ParagonIE_Sodium_Compat::crypto_stream_xchacha20($len, $nonce, $key, true);
16
+	}
17 17
 }
18 18
 if (!is_callable('sodium_crypto_stream_xchacha20_keygen')) {
19
-    /**
20
-     * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20_keygen()
21
-     * @return string
22
-     * @throws Exception
23
-     */
24
-    function sodium_crypto_stream_xchacha20_keygen()
25
-    {
26
-        return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_keygen();
27
-    }
19
+	/**
20
+	 * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20_keygen()
21
+	 * @return string
22
+	 * @throws Exception
23
+	 */
24
+	function sodium_crypto_stream_xchacha20_keygen()
25
+	{
26
+		return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_keygen();
27
+	}
28 28
 }
29 29
 if (!is_callable('sodium_crypto_stream_xchacha20_xor')) {
30
-    /**
31
-     * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor()
32
-     * @param string $message
33
-     * @param string $nonce
34
-     * @param string $key
35
-     * @return string
36
-     * @throws SodiumException
37
-     * @throws TypeError
38
-     */
39
-    function sodium_crypto_stream_xchacha20_xor($message, $nonce, $key)
40
-    {
41
-        return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor($message, $nonce, $key, true);
42
-    }
30
+	/**
31
+	 * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor()
32
+	 * @param string $message
33
+	 * @param string $nonce
34
+	 * @param string $key
35
+	 * @return string
36
+	 * @throws SodiumException
37
+	 * @throws TypeError
38
+	 */
39
+	function sodium_crypto_stream_xchacha20_xor($message, $nonce, $key)
40
+	{
41
+		return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor($message, $nonce, $key, true);
42
+	}
43 43
 }
Please login to merge, or discard this patch.
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (!is_callable('sodium_crypto_stream_xchacha20')) {
3
+if ( ! is_callable( 'sodium_crypto_stream_xchacha20' ) ) {
4 4
     /**
5 5
      * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20()
6 6
      * @param int $len
@@ -10,12 +10,12 @@  discard block
 block discarded – undo
10 10
      * @throws SodiumException
11 11
      * @throws TypeError
12 12
      */
13
-    function sodium_crypto_stream_xchacha20($len, $nonce, $key)
13
+    function sodium_crypto_stream_xchacha20( $len, $nonce, $key )
14 14
     {
15
-        return ParagonIE_Sodium_Compat::crypto_stream_xchacha20($len, $nonce, $key, true);
15
+        return ParagonIE_Sodium_Compat::crypto_stream_xchacha20( $len, $nonce, $key, true );
16 16
     }
17 17
 }
18
-if (!is_callable('sodium_crypto_stream_xchacha20_keygen')) {
18
+if ( ! is_callable( 'sodium_crypto_stream_xchacha20_keygen' ) ) {
19 19
     /**
20 20
      * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20_keygen()
21 21
      * @return string
@@ -26,7 +26,7 @@  discard block
 block discarded – undo
26 26
         return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_keygen();
27 27
     }
28 28
 }
29
-if (!is_callable('sodium_crypto_stream_xchacha20_xor')) {
29
+if ( ! is_callable( 'sodium_crypto_stream_xchacha20_xor' ) ) {
30 30
     /**
31 31
      * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor()
32 32
      * @param string $message
@@ -36,8 +36,8 @@  discard block
 block discarded – undo
36 36
      * @throws SodiumException
37 37
      * @throws TypeError
38 38
      */
39
-    function sodium_crypto_stream_xchacha20_xor($message, $nonce, $key)
39
+    function sodium_crypto_stream_xchacha20_xor( $message, $nonce, $key )
40 40
     {
41
-        return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor($message, $nonce, $key, true);
41
+        return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor( $message, $nonce, $key, true );
42 42
     }
43 43
 }
Please login to merge, or discard this patch.
Braces   +3 added lines, -6 removed lines patch added patch discarded remove patch
@@ -10,8 +10,7 @@  discard block
 block discarded – undo
10 10
      * @throws SodiumException
11 11
      * @throws TypeError
12 12
      */
13
-    function sodium_crypto_stream_xchacha20($len, $nonce, $key)
14
-    {
13
+    function sodium_crypto_stream_xchacha20($len, $nonce, $key) {
15 14
         return ParagonIE_Sodium_Compat::crypto_stream_xchacha20($len, $nonce, $key, true);
16 15
     }
17 16
 }
@@ -21,8 +20,7 @@  discard block
 block discarded – undo
21 20
      * @return string
22 21
      * @throws Exception
23 22
      */
24
-    function sodium_crypto_stream_xchacha20_keygen()
25
-    {
23
+    function sodium_crypto_stream_xchacha20_keygen() {
26 24
         return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_keygen();
27 25
     }
28 26
 }
@@ -36,8 +34,7 @@  discard block
 block discarded – undo
36 34
      * @throws SodiumException
37 35
      * @throws TypeError
38 36
      */
39
-    function sodium_crypto_stream_xchacha20_xor($message, $nonce, $key)
40
-    {
37
+    function sodium_crypto_stream_xchacha20_xor($message, $nonce, $key) {
41 38
         return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor($message, $nonce, $key, true);
42 39
     }
43 40
 }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/lib/php72compat.php 3 patches
Indentation   +1170 added lines, -1170 removed lines patch added patch discarded remove patch
@@ -10,1360 +10,1360 @@
 block discarded – undo
10 10
  * ParagonIE_Sodium_Compat method or class constant, respectively.
11 11
  */
12 12
 foreach (array(
13
-    'BASE64_VARIANT_ORIGINAL',
14
-    'BASE64_VARIANT_ORIGINAL_NO_PADDING',
15
-    'BASE64_VARIANT_URLSAFE',
16
-    'BASE64_VARIANT_URLSAFE_NO_PADDING',
17
-    'CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES',
18
-    'CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES',
19
-    'CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES',
20
-    'CRYPTO_AEAD_CHACHA20POLY1305_ABYTES',
21
-    'CRYPTO_AEAD_AES256GCM_KEYBYTES',
22
-    'CRYPTO_AEAD_AES256GCM_NSECBYTES',
23
-    'CRYPTO_AEAD_AES256GCM_NPUBBYTES',
24
-    'CRYPTO_AEAD_AES256GCM_ABYTES',
25
-    'CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES',
26
-    'CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES',
27
-    'CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES',
28
-    'CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES',
29
-    'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES',
30
-    'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES',
31
-    'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES',
32
-    'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES',
33
-    'CRYPTO_AUTH_BYTES',
34
-    'CRYPTO_AUTH_KEYBYTES',
35
-    'CRYPTO_BOX_SEALBYTES',
36
-    'CRYPTO_BOX_SECRETKEYBYTES',
37
-    'CRYPTO_BOX_PUBLICKEYBYTES',
38
-    'CRYPTO_BOX_KEYPAIRBYTES',
39
-    'CRYPTO_BOX_MACBYTES',
40
-    'CRYPTO_BOX_NONCEBYTES',
41
-    'CRYPTO_BOX_SEEDBYTES',
42
-    'CRYPTO_KDF_BYTES_MIN',
43
-    'CRYPTO_KDF_BYTES_MAX',
44
-    'CRYPTO_KDF_CONTEXTBYTES',
45
-    'CRYPTO_KDF_KEYBYTES',
46
-    'CRYPTO_KX_BYTES',
47
-    'CRYPTO_KX_KEYPAIRBYTES',
48
-    'CRYPTO_KX_PRIMITIVE',
49
-    'CRYPTO_KX_SEEDBYTES',
50
-    'CRYPTO_KX_PUBLICKEYBYTES',
51
-    'CRYPTO_KX_SECRETKEYBYTES',
52
-    'CRYPTO_KX_SESSIONKEYBYTES',
53
-    'CRYPTO_GENERICHASH_BYTES',
54
-    'CRYPTO_GENERICHASH_BYTES_MIN',
55
-    'CRYPTO_GENERICHASH_BYTES_MAX',
56
-    'CRYPTO_GENERICHASH_KEYBYTES',
57
-    'CRYPTO_GENERICHASH_KEYBYTES_MIN',
58
-    'CRYPTO_GENERICHASH_KEYBYTES_MAX',
59
-    'CRYPTO_PWHASH_SALTBYTES',
60
-    'CRYPTO_PWHASH_STRPREFIX',
61
-    'CRYPTO_PWHASH_ALG_ARGON2I13',
62
-    'CRYPTO_PWHASH_ALG_ARGON2ID13',
63
-    'CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE',
64
-    'CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE',
65
-    'CRYPTO_PWHASH_MEMLIMIT_MODERATE',
66
-    'CRYPTO_PWHASH_OPSLIMIT_MODERATE',
67
-    'CRYPTO_PWHASH_MEMLIMIT_SENSITIVE',
68
-    'CRYPTO_PWHASH_OPSLIMIT_SENSITIVE',
69
-    'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES',
70
-    'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX',
71
-    'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE',
72
-    'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE',
73
-    'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE',
74
-    'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE',
75
-    'CRYPTO_SCALARMULT_BYTES',
76
-    'CRYPTO_SCALARMULT_SCALARBYTES',
77
-    'CRYPTO_SHORTHASH_BYTES',
78
-    'CRYPTO_SHORTHASH_KEYBYTES',
79
-    'CRYPTO_SECRETBOX_KEYBYTES',
80
-    'CRYPTO_SECRETBOX_MACBYTES',
81
-    'CRYPTO_SECRETBOX_NONCEBYTES',
82
-    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES',
83
-    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES',
84
-    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES',
85
-    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH',
86
-    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PULL',
87
-    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY',
88
-    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL',
89
-    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX',
90
-    'CRYPTO_SIGN_BYTES',
91
-    'CRYPTO_SIGN_SEEDBYTES',
92
-    'CRYPTO_SIGN_PUBLICKEYBYTES',
93
-    'CRYPTO_SIGN_SECRETKEYBYTES',
94
-    'CRYPTO_SIGN_KEYPAIRBYTES',
95
-    'CRYPTO_STREAM_KEYBYTES',
96
-    'CRYPTO_STREAM_NONCEBYTES',
97
-    'CRYPTO_STREAM_XCHACHA20_KEYBYTES',
98
-    'CRYPTO_STREAM_XCHACHA20_NONCEBYTES',
99
-    'LIBRARY_MAJOR_VERSION',
100
-    'LIBRARY_MINOR_VERSION',
101
-    'LIBRARY_VERSION_MAJOR',
102
-    'LIBRARY_VERSION_MINOR',
103
-    'VERSION_STRING'
104
-    ) as $constant
13
+	'BASE64_VARIANT_ORIGINAL',
14
+	'BASE64_VARIANT_ORIGINAL_NO_PADDING',
15
+	'BASE64_VARIANT_URLSAFE',
16
+	'BASE64_VARIANT_URLSAFE_NO_PADDING',
17
+	'CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES',
18
+	'CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES',
19
+	'CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES',
20
+	'CRYPTO_AEAD_CHACHA20POLY1305_ABYTES',
21
+	'CRYPTO_AEAD_AES256GCM_KEYBYTES',
22
+	'CRYPTO_AEAD_AES256GCM_NSECBYTES',
23
+	'CRYPTO_AEAD_AES256GCM_NPUBBYTES',
24
+	'CRYPTO_AEAD_AES256GCM_ABYTES',
25
+	'CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES',
26
+	'CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES',
27
+	'CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES',
28
+	'CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES',
29
+	'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES',
30
+	'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES',
31
+	'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES',
32
+	'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES',
33
+	'CRYPTO_AUTH_BYTES',
34
+	'CRYPTO_AUTH_KEYBYTES',
35
+	'CRYPTO_BOX_SEALBYTES',
36
+	'CRYPTO_BOX_SECRETKEYBYTES',
37
+	'CRYPTO_BOX_PUBLICKEYBYTES',
38
+	'CRYPTO_BOX_KEYPAIRBYTES',
39
+	'CRYPTO_BOX_MACBYTES',
40
+	'CRYPTO_BOX_NONCEBYTES',
41
+	'CRYPTO_BOX_SEEDBYTES',
42
+	'CRYPTO_KDF_BYTES_MIN',
43
+	'CRYPTO_KDF_BYTES_MAX',
44
+	'CRYPTO_KDF_CONTEXTBYTES',
45
+	'CRYPTO_KDF_KEYBYTES',
46
+	'CRYPTO_KX_BYTES',
47
+	'CRYPTO_KX_KEYPAIRBYTES',
48
+	'CRYPTO_KX_PRIMITIVE',
49
+	'CRYPTO_KX_SEEDBYTES',
50
+	'CRYPTO_KX_PUBLICKEYBYTES',
51
+	'CRYPTO_KX_SECRETKEYBYTES',
52
+	'CRYPTO_KX_SESSIONKEYBYTES',
53
+	'CRYPTO_GENERICHASH_BYTES',
54
+	'CRYPTO_GENERICHASH_BYTES_MIN',
55
+	'CRYPTO_GENERICHASH_BYTES_MAX',
56
+	'CRYPTO_GENERICHASH_KEYBYTES',
57
+	'CRYPTO_GENERICHASH_KEYBYTES_MIN',
58
+	'CRYPTO_GENERICHASH_KEYBYTES_MAX',
59
+	'CRYPTO_PWHASH_SALTBYTES',
60
+	'CRYPTO_PWHASH_STRPREFIX',
61
+	'CRYPTO_PWHASH_ALG_ARGON2I13',
62
+	'CRYPTO_PWHASH_ALG_ARGON2ID13',
63
+	'CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE',
64
+	'CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE',
65
+	'CRYPTO_PWHASH_MEMLIMIT_MODERATE',
66
+	'CRYPTO_PWHASH_OPSLIMIT_MODERATE',
67
+	'CRYPTO_PWHASH_MEMLIMIT_SENSITIVE',
68
+	'CRYPTO_PWHASH_OPSLIMIT_SENSITIVE',
69
+	'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES',
70
+	'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX',
71
+	'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE',
72
+	'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE',
73
+	'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE',
74
+	'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE',
75
+	'CRYPTO_SCALARMULT_BYTES',
76
+	'CRYPTO_SCALARMULT_SCALARBYTES',
77
+	'CRYPTO_SHORTHASH_BYTES',
78
+	'CRYPTO_SHORTHASH_KEYBYTES',
79
+	'CRYPTO_SECRETBOX_KEYBYTES',
80
+	'CRYPTO_SECRETBOX_MACBYTES',
81
+	'CRYPTO_SECRETBOX_NONCEBYTES',
82
+	'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES',
83
+	'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES',
84
+	'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES',
85
+	'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH',
86
+	'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PULL',
87
+	'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY',
88
+	'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL',
89
+	'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX',
90
+	'CRYPTO_SIGN_BYTES',
91
+	'CRYPTO_SIGN_SEEDBYTES',
92
+	'CRYPTO_SIGN_PUBLICKEYBYTES',
93
+	'CRYPTO_SIGN_SECRETKEYBYTES',
94
+	'CRYPTO_SIGN_KEYPAIRBYTES',
95
+	'CRYPTO_STREAM_KEYBYTES',
96
+	'CRYPTO_STREAM_NONCEBYTES',
97
+	'CRYPTO_STREAM_XCHACHA20_KEYBYTES',
98
+	'CRYPTO_STREAM_XCHACHA20_NONCEBYTES',
99
+	'LIBRARY_MAJOR_VERSION',
100
+	'LIBRARY_MINOR_VERSION',
101
+	'LIBRARY_VERSION_MAJOR',
102
+	'LIBRARY_VERSION_MINOR',
103
+	'VERSION_STRING'
104
+	) as $constant
105 105
 ) {
106
-    if (!defined("SODIUM_$constant") && defined("ParagonIE_Sodium_Compat::$constant")) {
107
-        define("SODIUM_$constant", constant("ParagonIE_Sodium_Compat::$constant"));
108
-    }
106
+	if (!defined("SODIUM_$constant") && defined("ParagonIE_Sodium_Compat::$constant")) {
107
+		define("SODIUM_$constant", constant("ParagonIE_Sodium_Compat::$constant"));
108
+	}
109 109
 }
110 110
 if (!is_callable('sodium_add')) {
111
-    /**
112
-     * @see ParagonIE_Sodium_Compat::add()
113
-     * @param string $val
114
-     * @param string $addv
115
-     * @return void
116
-     * @throws SodiumException
117
-     */
118
-    function sodium_add(&$val, $addv)
119
-    {
120
-        ParagonIE_Sodium_Compat::add($val, $addv);
121
-    }
111
+	/**
112
+	 * @see ParagonIE_Sodium_Compat::add()
113
+	 * @param string $val
114
+	 * @param string $addv
115
+	 * @return void
116
+	 * @throws SodiumException
117
+	 */
118
+	function sodium_add(&$val, $addv)
119
+	{
120
+		ParagonIE_Sodium_Compat::add($val, $addv);
121
+	}
122 122
 }
123 123
 if (!is_callable('sodium_base642bin')) {
124
-    /**
125
-     * @see ParagonIE_Sodium_Compat::bin2base64()
126
-     * @param string $string
127
-     * @param int $variant
128
-     * @param string $ignore
129
-     * @return string
130
-     * @throws SodiumException
131
-     * @throws TypeError
132
-     */
133
-    function sodium_base642bin($string, $variant, $ignore ='')
134
-    {
135
-        return ParagonIE_Sodium_Compat::base642bin($string, $variant, $ignore);
136
-    }
124
+	/**
125
+	 * @see ParagonIE_Sodium_Compat::bin2base64()
126
+	 * @param string $string
127
+	 * @param int $variant
128
+	 * @param string $ignore
129
+	 * @return string
130
+	 * @throws SodiumException
131
+	 * @throws TypeError
132
+	 */
133
+	function sodium_base642bin($string, $variant, $ignore ='')
134
+	{
135
+		return ParagonIE_Sodium_Compat::base642bin($string, $variant, $ignore);
136
+	}
137 137
 }
138 138
 if (!is_callable('sodium_bin2base64')) {
139
-    /**
140
-     * @see ParagonIE_Sodium_Compat::bin2base64()
141
-     * @param string $string
142
-     * @param int $variant
143
-     * @return string
144
-     * @throws SodiumException
145
-     * @throws TypeError
146
-     */
147
-    function sodium_bin2base64($string, $variant)
148
-    {
149
-        return ParagonIE_Sodium_Compat::bin2base64($string, $variant);
150
-    }
139
+	/**
140
+	 * @see ParagonIE_Sodium_Compat::bin2base64()
141
+	 * @param string $string
142
+	 * @param int $variant
143
+	 * @return string
144
+	 * @throws SodiumException
145
+	 * @throws TypeError
146
+	 */
147
+	function sodium_bin2base64($string, $variant)
148
+	{
149
+		return ParagonIE_Sodium_Compat::bin2base64($string, $variant);
150
+	}
151 151
 }
152 152
 if (!is_callable('sodium_bin2hex')) {
153
-    /**
154
-     * @see ParagonIE_Sodium_Compat::hex2bin()
155
-     * @param string $string
156
-     * @return string
157
-     * @throws SodiumException
158
-     * @throws TypeError
159
-     */
160
-    function sodium_bin2hex($string)
161
-    {
162
-        return ParagonIE_Sodium_Compat::bin2hex($string);
163
-    }
153
+	/**
154
+	 * @see ParagonIE_Sodium_Compat::hex2bin()
155
+	 * @param string $string
156
+	 * @return string
157
+	 * @throws SodiumException
158
+	 * @throws TypeError
159
+	 */
160
+	function sodium_bin2hex($string)
161
+	{
162
+		return ParagonIE_Sodium_Compat::bin2hex($string);
163
+	}
164 164
 }
165 165
 if (!is_callable('sodium_compare')) {
166
-    /**
167
-     * @see ParagonIE_Sodium_Compat::compare()
168
-     * @param string $a
169
-     * @param string $b
170
-     * @return int
171
-     * @throws SodiumException
172
-     * @throws TypeError
173
-     */
174
-    function sodium_compare($a, $b)
175
-    {
176
-        return ParagonIE_Sodium_Compat::compare($a, $b);
177
-    }
166
+	/**
167
+	 * @see ParagonIE_Sodium_Compat::compare()
168
+	 * @param string $a
169
+	 * @param string $b
170
+	 * @return int
171
+	 * @throws SodiumException
172
+	 * @throws TypeError
173
+	 */
174
+	function sodium_compare($a, $b)
175
+	{
176
+		return ParagonIE_Sodium_Compat::compare($a, $b);
177
+	}
178 178
 }
179 179
 if (!is_callable('sodium_crypto_aead_aes256gcm_decrypt')) {
180
-    /**
181
-     * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt()
182
-     * @param string $message
183
-     * @param string $assocData
184
-     * @param string $nonce
185
-     * @param string $key
186
-     * @return string|bool
187
-     */
188
-    function sodium_crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key)
189
-    {
190
-        try {
191
-            return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key);
192
-        } catch (Error $ex) {
193
-            return false;
194
-        } catch (Exception $ex) {
195
-            return false;
196
-        }
197
-    }
180
+	/**
181
+	 * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt()
182
+	 * @param string $message
183
+	 * @param string $assocData
184
+	 * @param string $nonce
185
+	 * @param string $key
186
+	 * @return string|bool
187
+	 */
188
+	function sodium_crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key)
189
+	{
190
+		try {
191
+			return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key);
192
+		} catch (Error $ex) {
193
+			return false;
194
+		} catch (Exception $ex) {
195
+			return false;
196
+		}
197
+	}
198 198
 }
199 199
 if (!is_callable('sodium_crypto_aead_aes256gcm_encrypt')) {
200
-    /**
201
-     * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt()
202
-     * @param string $message
203
-     * @param string $assocData
204
-     * @param string $nonce
205
-     * @param string $key
206
-     * @return string
207
-     * @throws SodiumException
208
-     * @throws TypeError
209
-     */
210
-    function sodium_crypto_aead_aes256gcm_encrypt($message, $assocData, $nonce, $key)
211
-    {
212
-        return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt($message, $assocData, $nonce, $key);
213
-    }
200
+	/**
201
+	 * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt()
202
+	 * @param string $message
203
+	 * @param string $assocData
204
+	 * @param string $nonce
205
+	 * @param string $key
206
+	 * @return string
207
+	 * @throws SodiumException
208
+	 * @throws TypeError
209
+	 */
210
+	function sodium_crypto_aead_aes256gcm_encrypt($message, $assocData, $nonce, $key)
211
+	{
212
+		return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt($message, $assocData, $nonce, $key);
213
+	}
214 214
 }
215 215
 if (!is_callable('sodium_crypto_aead_aes256gcm_is_available')) {
216
-    /**
217
-     * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available()
218
-     * @return bool
219
-     */
220
-    function sodium_crypto_aead_aes256gcm_is_available()
221
-    {
222
-        return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available();
223
-    }
216
+	/**
217
+	 * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available()
218
+	 * @return bool
219
+	 */
220
+	function sodium_crypto_aead_aes256gcm_is_available()
221
+	{
222
+		return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available();
223
+	}
224 224
 }
225 225
 if (!is_callable('sodium_crypto_aead_chacha20poly1305_decrypt')) {
226
-    /**
227
-     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt()
228
-     * @param string $message
229
-     * @param string $assocData
230
-     * @param string $nonce
231
-     * @param string $key
232
-     * @return string|bool
233
-     */
234
-    function sodium_crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key)
235
-    {
236
-        try {
237
-            return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key);
238
-        } catch (Error $ex) {
239
-            return false;
240
-        } catch (Exception $ex) {
241
-            return false;
242
-        }
243
-    }
226
+	/**
227
+	 * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt()
228
+	 * @param string $message
229
+	 * @param string $assocData
230
+	 * @param string $nonce
231
+	 * @param string $key
232
+	 * @return string|bool
233
+	 */
234
+	function sodium_crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key)
235
+	{
236
+		try {
237
+			return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key);
238
+		} catch (Error $ex) {
239
+			return false;
240
+		} catch (Exception $ex) {
241
+			return false;
242
+		}
243
+	}
244 244
 }
245 245
 if (!is_callable('sodium_crypto_aead_chacha20poly1305_encrypt')) {
246
-    /**
247
-     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt()
248
-     * @param string $message
249
-     * @param string $assocData
250
-     * @param string $nonce
251
-     * @param string $key
252
-     * @return string
253
-     * @throws SodiumException
254
-     * @throws TypeError
255
-     */
256
-    function sodium_crypto_aead_chacha20poly1305_encrypt($message, $assocData, $nonce, $key)
257
-    {
258
-        return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt($message, $assocData, $nonce, $key);
259
-    }
246
+	/**
247
+	 * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt()
248
+	 * @param string $message
249
+	 * @param string $assocData
250
+	 * @param string $nonce
251
+	 * @param string $key
252
+	 * @return string
253
+	 * @throws SodiumException
254
+	 * @throws TypeError
255
+	 */
256
+	function sodium_crypto_aead_chacha20poly1305_encrypt($message, $assocData, $nonce, $key)
257
+	{
258
+		return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt($message, $assocData, $nonce, $key);
259
+	}
260 260
 }
261 261
 if (!is_callable('sodium_crypto_aead_chacha20poly1305_keygen')) {
262
-    /**
263
-     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_keygen()
264
-     * @return string
265
-     * @throws Exception
266
-     */
267
-    function sodium_crypto_aead_chacha20poly1305_keygen()
268
-    {
269
-        return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_keygen();
270
-    }
262
+	/**
263
+	 * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_keygen()
264
+	 * @return string
265
+	 * @throws Exception
266
+	 */
267
+	function sodium_crypto_aead_chacha20poly1305_keygen()
268
+	{
269
+		return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_keygen();
270
+	}
271 271
 }
272 272
 if (!is_callable('sodium_crypto_aead_chacha20poly1305_ietf_decrypt')) {
273
-    /**
274
-     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt()
275
-     * @param string $message
276
-     * @param string $assocData
277
-     * @param string $nonce
278
-     * @param string $key
279
-     * @return string|bool
280
-     */
281
-    function sodium_crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key)
282
-    {
283
-        try {
284
-            return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key);
285
-        } catch (Error $ex) {
286
-            return false;
287
-        } catch (Exception $ex) {
288
-            return false;
289
-        }
290
-    }
273
+	/**
274
+	 * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt()
275
+	 * @param string $message
276
+	 * @param string $assocData
277
+	 * @param string $nonce
278
+	 * @param string $key
279
+	 * @return string|bool
280
+	 */
281
+	function sodium_crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key)
282
+	{
283
+		try {
284
+			return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key);
285
+		} catch (Error $ex) {
286
+			return false;
287
+		} catch (Exception $ex) {
288
+			return false;
289
+		}
290
+	}
291 291
 }
292 292
 if (!is_callable('sodium_crypto_aead_chacha20poly1305_ietf_encrypt')) {
293
-    /**
294
-     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt()
295
-     * @param string $message
296
-     * @param string $assocData
297
-     * @param string $nonce
298
-     * @param string $key
299
-     * @return string
300
-     * @throws SodiumException
301
-     * @throws TypeError
302
-     */
303
-    function sodium_crypto_aead_chacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key)
304
-    {
305
-        return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key);
306
-    }
293
+	/**
294
+	 * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt()
295
+	 * @param string $message
296
+	 * @param string $assocData
297
+	 * @param string $nonce
298
+	 * @param string $key
299
+	 * @return string
300
+	 * @throws SodiumException
301
+	 * @throws TypeError
302
+	 */
303
+	function sodium_crypto_aead_chacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key)
304
+	{
305
+		return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key);
306
+	}
307 307
 }
308 308
 if (!is_callable('sodium_crypto_aead_chacha20poly1305_ietf_keygen')) {
309
-    /**
310
-     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_keygen()
311
-     * @return string
312
-     * @throws Exception
313
-     */
314
-    function sodium_crypto_aead_chacha20poly1305_ietf_keygen()
315
-    {
316
-        return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_keygen();
317
-    }
309
+	/**
310
+	 * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_keygen()
311
+	 * @return string
312
+	 * @throws Exception
313
+	 */
314
+	function sodium_crypto_aead_chacha20poly1305_ietf_keygen()
315
+	{
316
+		return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_keygen();
317
+	}
318 318
 }
319 319
 if (!is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_decrypt')) {
320
-    /**
321
-     * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_decrypt()
322
-     * @param string $message
323
-     * @param string $assocData
324
-     * @param string $nonce
325
-     * @param string $key
326
-     * @return string|bool
327
-     */
328
-    function sodium_crypto_aead_xchacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key)
329
-    {
330
-        try {
331
-            return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key, true);
332
-        } catch (Error $ex) {
333
-            return false;
334
-        } catch (Exception $ex) {
335
-            return false;
336
-        }
337
-    }
320
+	/**
321
+	 * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_decrypt()
322
+	 * @param string $message
323
+	 * @param string $assocData
324
+	 * @param string $nonce
325
+	 * @param string $key
326
+	 * @return string|bool
327
+	 */
328
+	function sodium_crypto_aead_xchacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key)
329
+	{
330
+		try {
331
+			return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key, true);
332
+		} catch (Error $ex) {
333
+			return false;
334
+		} catch (Exception $ex) {
335
+			return false;
336
+		}
337
+	}
338 338
 }
339 339
 if (!is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_encrypt')) {
340
-    /**
341
-     * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_encrypt()
342
-     * @param string $message
343
-     * @param string $assocData
344
-     * @param string $nonce
345
-     * @param string $key
346
-     * @return string
347
-     * @throws SodiumException
348
-     * @throws TypeError
349
-     */
350
-    function sodium_crypto_aead_xchacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key)
351
-    {
352
-        return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key, true);
353
-    }
340
+	/**
341
+	 * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_encrypt()
342
+	 * @param string $message
343
+	 * @param string $assocData
344
+	 * @param string $nonce
345
+	 * @param string $key
346
+	 * @return string
347
+	 * @throws SodiumException
348
+	 * @throws TypeError
349
+	 */
350
+	function sodium_crypto_aead_xchacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key)
351
+	{
352
+		return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key, true);
353
+	}
354 354
 }
355 355
 if (!is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_keygen')) {
356
-    /**
357
-     * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_keygen()
358
-     * @return string
359
-     * @throws Exception
360
-     */
361
-    function sodium_crypto_aead_xchacha20poly1305_ietf_keygen()
362
-    {
363
-        return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_keygen();
364
-    }
356
+	/**
357
+	 * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_keygen()
358
+	 * @return string
359
+	 * @throws Exception
360
+	 */
361
+	function sodium_crypto_aead_xchacha20poly1305_ietf_keygen()
362
+	{
363
+		return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_keygen();
364
+	}
365 365
 }
366 366
 if (!is_callable('sodium_crypto_auth')) {
367
-    /**
368
-     * @see ParagonIE_Sodium_Compat::crypto_auth()
369
-     * @param string $message
370
-     * @param string $key
371
-     * @return string
372
-     * @throws SodiumException
373
-     * @throws TypeError
374
-     */
375
-    function sodium_crypto_auth($message, $key)
376
-    {
377
-        return ParagonIE_Sodium_Compat::crypto_auth($message, $key);
378
-    }
367
+	/**
368
+	 * @see ParagonIE_Sodium_Compat::crypto_auth()
369
+	 * @param string $message
370
+	 * @param string $key
371
+	 * @return string
372
+	 * @throws SodiumException
373
+	 * @throws TypeError
374
+	 */
375
+	function sodium_crypto_auth($message, $key)
376
+	{
377
+		return ParagonIE_Sodium_Compat::crypto_auth($message, $key);
378
+	}
379 379
 }
380 380
 if (!is_callable('sodium_crypto_auth_keygen')) {
381
-    /**
382
-     * @see ParagonIE_Sodium_Compat::crypto_auth_keygen()
383
-     * @return string
384
-     * @throws Exception
385
-     */
386
-    function sodium_crypto_auth_keygen()
387
-    {
388
-        return ParagonIE_Sodium_Compat::crypto_auth_keygen();
389
-    }
381
+	/**
382
+	 * @see ParagonIE_Sodium_Compat::crypto_auth_keygen()
383
+	 * @return string
384
+	 * @throws Exception
385
+	 */
386
+	function sodium_crypto_auth_keygen()
387
+	{
388
+		return ParagonIE_Sodium_Compat::crypto_auth_keygen();
389
+	}
390 390
 }
391 391
 if (!is_callable('sodium_crypto_auth_verify')) {
392
-    /**
393
-     * @see ParagonIE_Sodium_Compat::crypto_auth_verify()
394
-     * @param string $mac
395
-     * @param string $message
396
-     * @param string $key
397
-     * @return bool
398
-     * @throws SodiumException
399
-     * @throws TypeError
400
-     */
401
-    function sodium_crypto_auth_verify($mac, $message, $key)
402
-    {
403
-        return ParagonIE_Sodium_Compat::crypto_auth_verify($mac, $message, $key);
404
-    }
392
+	/**
393
+	 * @see ParagonIE_Sodium_Compat::crypto_auth_verify()
394
+	 * @param string $mac
395
+	 * @param string $message
396
+	 * @param string $key
397
+	 * @return bool
398
+	 * @throws SodiumException
399
+	 * @throws TypeError
400
+	 */
401
+	function sodium_crypto_auth_verify($mac, $message, $key)
402
+	{
403
+		return ParagonIE_Sodium_Compat::crypto_auth_verify($mac, $message, $key);
404
+	}
405 405
 }
406 406
 if (!is_callable('sodium_crypto_box')) {
407
-    /**
408
-     * @see ParagonIE_Sodium_Compat::crypto_box()
409
-     * @param string $message
410
-     * @param string $nonce
411
-     * @param string $kp
412
-     * @return string
413
-     * @throws SodiumException
414
-     * @throws TypeError
415
-     */
416
-    function sodium_crypto_box($message, $nonce, $kp)
417
-    {
418
-        return ParagonIE_Sodium_Compat::crypto_box($message, $nonce, $kp);
419
-    }
407
+	/**
408
+	 * @see ParagonIE_Sodium_Compat::crypto_box()
409
+	 * @param string $message
410
+	 * @param string $nonce
411
+	 * @param string $kp
412
+	 * @return string
413
+	 * @throws SodiumException
414
+	 * @throws TypeError
415
+	 */
416
+	function sodium_crypto_box($message, $nonce, $kp)
417
+	{
418
+		return ParagonIE_Sodium_Compat::crypto_box($message, $nonce, $kp);
419
+	}
420 420
 }
421 421
 if (!is_callable('sodium_crypto_box_keypair')) {
422
-    /**
423
-     * @see ParagonIE_Sodium_Compat::crypto_box_keypair()
424
-     * @return string
425
-     * @throws SodiumException
426
-     * @throws TypeError
427
-     */
428
-    function sodium_crypto_box_keypair()
429
-    {
430
-        return ParagonIE_Sodium_Compat::crypto_box_keypair();
431
-    }
422
+	/**
423
+	 * @see ParagonIE_Sodium_Compat::crypto_box_keypair()
424
+	 * @return string
425
+	 * @throws SodiumException
426
+	 * @throws TypeError
427
+	 */
428
+	function sodium_crypto_box_keypair()
429
+	{
430
+		return ParagonIE_Sodium_Compat::crypto_box_keypair();
431
+	}
432 432
 }
433 433
 if (!is_callable('sodium_crypto_box_keypair_from_secretkey_and_publickey')) {
434
-    /**
435
-     * @see ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey()
436
-     * @param string $sk
437
-     * @param string $pk
438
-     * @return string
439
-     * @throws SodiumException
440
-     * @throws TypeError
441
-     */
442
-    function sodium_crypto_box_keypair_from_secretkey_and_publickey($sk, $pk)
443
-    {
444
-        return ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey($sk, $pk);
445
-    }
434
+	/**
435
+	 * @see ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey()
436
+	 * @param string $sk
437
+	 * @param string $pk
438
+	 * @return string
439
+	 * @throws SodiumException
440
+	 * @throws TypeError
441
+	 */
442
+	function sodium_crypto_box_keypair_from_secretkey_and_publickey($sk, $pk)
443
+	{
444
+		return ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey($sk, $pk);
445
+	}
446 446
 }
447 447
 if (!is_callable('sodium_crypto_box_open')) {
448
-    /**
449
-     * @see ParagonIE_Sodium_Compat::crypto_box_open()
450
-     * @param string $message
451
-     * @param string $nonce
452
-     * @param string $kp
453
-     * @return string|bool
454
-     */
455
-    function sodium_crypto_box_open($message, $nonce, $kp)
456
-    {
457
-        try {
458
-            return ParagonIE_Sodium_Compat::crypto_box_open($message, $nonce, $kp);
459
-        } catch (Error $ex) {
460
-            return false;
461
-        } catch (Exception $ex) {
462
-            return false;
463
-        }
464
-    }
448
+	/**
449
+	 * @see ParagonIE_Sodium_Compat::crypto_box_open()
450
+	 * @param string $message
451
+	 * @param string $nonce
452
+	 * @param string $kp
453
+	 * @return string|bool
454
+	 */
455
+	function sodium_crypto_box_open($message, $nonce, $kp)
456
+	{
457
+		try {
458
+			return ParagonIE_Sodium_Compat::crypto_box_open($message, $nonce, $kp);
459
+		} catch (Error $ex) {
460
+			return false;
461
+		} catch (Exception $ex) {
462
+			return false;
463
+		}
464
+	}
465 465
 }
466 466
 if (!is_callable('sodium_crypto_box_publickey')) {
467
-    /**
468
-     * @see ParagonIE_Sodium_Compat::crypto_box_publickey()
469
-     * @param string $keypair
470
-     * @return string
471
-     * @throws SodiumException
472
-     * @throws TypeError
473
-     */
474
-    function sodium_crypto_box_publickey($keypair)
475
-    {
476
-        return ParagonIE_Sodium_Compat::crypto_box_publickey($keypair);
477
-    }
467
+	/**
468
+	 * @see ParagonIE_Sodium_Compat::crypto_box_publickey()
469
+	 * @param string $keypair
470
+	 * @return string
471
+	 * @throws SodiumException
472
+	 * @throws TypeError
473
+	 */
474
+	function sodium_crypto_box_publickey($keypair)
475
+	{
476
+		return ParagonIE_Sodium_Compat::crypto_box_publickey($keypair);
477
+	}
478 478
 }
479 479
 if (!is_callable('sodium_crypto_box_publickey_from_secretkey')) {
480
-    /**
481
-     * @see ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey()
482
-     * @param string $sk
483
-     * @return string
484
-     * @throws SodiumException
485
-     * @throws TypeError
486
-     */
487
-    function sodium_crypto_box_publickey_from_secretkey($sk)
488
-    {
489
-        return ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey($sk);
490
-    }
480
+	/**
481
+	 * @see ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey()
482
+	 * @param string $sk
483
+	 * @return string
484
+	 * @throws SodiumException
485
+	 * @throws TypeError
486
+	 */
487
+	function sodium_crypto_box_publickey_from_secretkey($sk)
488
+	{
489
+		return ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey($sk);
490
+	}
491 491
 }
492 492
 if (!is_callable('sodium_crypto_box_seal')) {
493
-    /**
494
-     * @see ParagonIE_Sodium_Compat::crypto_box_seal()
495
-     * @param string $message
496
-     * @param string $publicKey
497
-     * @return string
498
-     * @throws SodiumException
499
-     * @throws TypeError
500
-     */
501
-    function sodium_crypto_box_seal($message, $publicKey)
502
-    {
503
-        return ParagonIE_Sodium_Compat::crypto_box_seal($message, $publicKey);
504
-    }
493
+	/**
494
+	 * @see ParagonIE_Sodium_Compat::crypto_box_seal()
495
+	 * @param string $message
496
+	 * @param string $publicKey
497
+	 * @return string
498
+	 * @throws SodiumException
499
+	 * @throws TypeError
500
+	 */
501
+	function sodium_crypto_box_seal($message, $publicKey)
502
+	{
503
+		return ParagonIE_Sodium_Compat::crypto_box_seal($message, $publicKey);
504
+	}
505 505
 }
506 506
 if (!is_callable('sodium_crypto_box_seal_open')) {
507
-    /**
508
-     * @see ParagonIE_Sodium_Compat::crypto_box_seal_open()
509
-     * @param string $message
510
-     * @param string $kp
511
-     * @return string|bool
512
-     * @throws SodiumException
513
-     */
514
-    function sodium_crypto_box_seal_open($message, $kp)
515
-    {
516
-        try {
517
-            return ParagonIE_Sodium_Compat::crypto_box_seal_open($message, $kp);
518
-        } catch (SodiumException $ex) {
519
-            if ($ex->getMessage() === 'Argument 2 must be CRYPTO_BOX_KEYPAIRBYTES long.') {
520
-                throw $ex;
521
-            }
522
-            return false;
523
-        }
524
-    }
507
+	/**
508
+	 * @see ParagonIE_Sodium_Compat::crypto_box_seal_open()
509
+	 * @param string $message
510
+	 * @param string $kp
511
+	 * @return string|bool
512
+	 * @throws SodiumException
513
+	 */
514
+	function sodium_crypto_box_seal_open($message, $kp)
515
+	{
516
+		try {
517
+			return ParagonIE_Sodium_Compat::crypto_box_seal_open($message, $kp);
518
+		} catch (SodiumException $ex) {
519
+			if ($ex->getMessage() === 'Argument 2 must be CRYPTO_BOX_KEYPAIRBYTES long.') {
520
+				throw $ex;
521
+			}
522
+			return false;
523
+		}
524
+	}
525 525
 }
526 526
 if (!is_callable('sodium_crypto_box_secretkey')) {
527
-    /**
528
-     * @see ParagonIE_Sodium_Compat::crypto_box_secretkey()
529
-     * @param string $keypair
530
-     * @return string
531
-     * @throws SodiumException
532
-     * @throws TypeError
533
-     */
534
-    function sodium_crypto_box_secretkey($keypair)
535
-    {
536
-        return ParagonIE_Sodium_Compat::crypto_box_secretkey($keypair);
537
-    }
527
+	/**
528
+	 * @see ParagonIE_Sodium_Compat::crypto_box_secretkey()
529
+	 * @param string $keypair
530
+	 * @return string
531
+	 * @throws SodiumException
532
+	 * @throws TypeError
533
+	 */
534
+	function sodium_crypto_box_secretkey($keypair)
535
+	{
536
+		return ParagonIE_Sodium_Compat::crypto_box_secretkey($keypair);
537
+	}
538 538
 }
539 539
 if (!is_callable('sodium_crypto_box_seed_keypair')) {
540
-    /**
541
-     * @see ParagonIE_Sodium_Compat::crypto_box_seed_keypair()
542
-     * @param string $seed
543
-     * @return string
544
-     * @throws SodiumException
545
-     * @throws TypeError
546
-     */
547
-    function sodium_crypto_box_seed_keypair($seed)
548
-    {
549
-        return ParagonIE_Sodium_Compat::crypto_box_seed_keypair($seed);
550
-    }
540
+	/**
541
+	 * @see ParagonIE_Sodium_Compat::crypto_box_seed_keypair()
542
+	 * @param string $seed
543
+	 * @return string
544
+	 * @throws SodiumException
545
+	 * @throws TypeError
546
+	 */
547
+	function sodium_crypto_box_seed_keypair($seed)
548
+	{
549
+		return ParagonIE_Sodium_Compat::crypto_box_seed_keypair($seed);
550
+	}
551 551
 }
552 552
 if (!is_callable('sodium_crypto_generichash')) {
553
-    /**
554
-     * @see ParagonIE_Sodium_Compat::crypto_generichash()
555
-     * @param string $message
556
-     * @param string|null $key
557
-     * @param int $outLen
558
-     * @return string
559
-     * @throws SodiumException
560
-     * @throws TypeError
561
-     */
562
-    function sodium_crypto_generichash($message, $key = null, $outLen = 32)
563
-    {
564
-        return ParagonIE_Sodium_Compat::crypto_generichash($message, $key, $outLen);
565
-    }
553
+	/**
554
+	 * @see ParagonIE_Sodium_Compat::crypto_generichash()
555
+	 * @param string $message
556
+	 * @param string|null $key
557
+	 * @param int $outLen
558
+	 * @return string
559
+	 * @throws SodiumException
560
+	 * @throws TypeError
561
+	 */
562
+	function sodium_crypto_generichash($message, $key = null, $outLen = 32)
563
+	{
564
+		return ParagonIE_Sodium_Compat::crypto_generichash($message, $key, $outLen);
565
+	}
566 566
 }
567 567
 if (!is_callable('sodium_crypto_generichash_final')) {
568
-    /**
569
-     * @see ParagonIE_Sodium_Compat::crypto_generichash_final()
570
-     * @param string|null $ctx
571
-     * @param int $outputLength
572
-     * @return string
573
-     * @throws SodiumException
574
-     * @throws TypeError
575
-     */
576
-    function sodium_crypto_generichash_final(&$ctx, $outputLength = 32)
577
-    {
578
-        return ParagonIE_Sodium_Compat::crypto_generichash_final($ctx, $outputLength);
579
-    }
568
+	/**
569
+	 * @see ParagonIE_Sodium_Compat::crypto_generichash_final()
570
+	 * @param string|null $ctx
571
+	 * @param int $outputLength
572
+	 * @return string
573
+	 * @throws SodiumException
574
+	 * @throws TypeError
575
+	 */
576
+	function sodium_crypto_generichash_final(&$ctx, $outputLength = 32)
577
+	{
578
+		return ParagonIE_Sodium_Compat::crypto_generichash_final($ctx, $outputLength);
579
+	}
580 580
 }
581 581
 if (!is_callable('sodium_crypto_generichash_init')) {
582
-    /**
583
-     * @see ParagonIE_Sodium_Compat::crypto_generichash_init()
584
-     * @param string|null $key
585
-     * @param int $outLen
586
-     * @return string
587
-     * @throws SodiumException
588
-     * @throws TypeError
589
-     */
590
-    function sodium_crypto_generichash_init($key = null, $outLen = 32)
591
-    {
592
-        return ParagonIE_Sodium_Compat::crypto_generichash_init($key, $outLen);
593
-    }
582
+	/**
583
+	 * @see ParagonIE_Sodium_Compat::crypto_generichash_init()
584
+	 * @param string|null $key
585
+	 * @param int $outLen
586
+	 * @return string
587
+	 * @throws SodiumException
588
+	 * @throws TypeError
589
+	 */
590
+	function sodium_crypto_generichash_init($key = null, $outLen = 32)
591
+	{
592
+		return ParagonIE_Sodium_Compat::crypto_generichash_init($key, $outLen);
593
+	}
594 594
 }
595 595
 if (!is_callable('sodium_crypto_generichash_keygen')) {
596
-    /**
597
-     * @see ParagonIE_Sodium_Compat::crypto_generichash_keygen()
598
-     * @return string
599
-     * @throws Exception
600
-     */
601
-    function sodium_crypto_generichash_keygen()
602
-    {
603
-        return ParagonIE_Sodium_Compat::crypto_generichash_keygen();
604
-    }
596
+	/**
597
+	 * @see ParagonIE_Sodium_Compat::crypto_generichash_keygen()
598
+	 * @return string
599
+	 * @throws Exception
600
+	 */
601
+	function sodium_crypto_generichash_keygen()
602
+	{
603
+		return ParagonIE_Sodium_Compat::crypto_generichash_keygen();
604
+	}
605 605
 }
606 606
 if (!is_callable('sodium_crypto_generichash_update')) {
607
-    /**
608
-     * @see ParagonIE_Sodium_Compat::crypto_generichash_update()
609
-     * @param string|null $ctx
610
-     * @param string $message
611
-     * @return void
612
-     * @throws SodiumException
613
-     * @throws TypeError
614
-     */
615
-    function sodium_crypto_generichash_update(&$ctx, $message = '')
616
-    {
617
-        ParagonIE_Sodium_Compat::crypto_generichash_update($ctx, $message);
618
-    }
607
+	/**
608
+	 * @see ParagonIE_Sodium_Compat::crypto_generichash_update()
609
+	 * @param string|null $ctx
610
+	 * @param string $message
611
+	 * @return void
612
+	 * @throws SodiumException
613
+	 * @throws TypeError
614
+	 */
615
+	function sodium_crypto_generichash_update(&$ctx, $message = '')
616
+	{
617
+		ParagonIE_Sodium_Compat::crypto_generichash_update($ctx, $message);
618
+	}
619 619
 }
620 620
 if (!is_callable('sodium_crypto_kdf_keygen')) {
621
-    /**
622
-     * @see ParagonIE_Sodium_Compat::crypto_kdf_keygen()
623
-     * @return string
624
-     * @throws Exception
625
-     */
626
-    function sodium_crypto_kdf_keygen()
627
-    {
628
-        return ParagonIE_Sodium_Compat::crypto_kdf_keygen();
629
-    }
621
+	/**
622
+	 * @see ParagonIE_Sodium_Compat::crypto_kdf_keygen()
623
+	 * @return string
624
+	 * @throws Exception
625
+	 */
626
+	function sodium_crypto_kdf_keygen()
627
+	{
628
+		return ParagonIE_Sodium_Compat::crypto_kdf_keygen();
629
+	}
630 630
 }
631 631
 if (!is_callable('sodium_crypto_kdf_derive_from_key')) {
632
-    /**
633
-     * @see ParagonIE_Sodium_Compat::crypto_kdf_derive_from_key()
634
-     * @param int $subkey_len
635
-     * @param int $subkey_id
636
-     * @param string $context
637
-     * @param string $key
638
-     * @return string
639
-     * @throws Exception
640
-     */
641
-    function sodium_crypto_kdf_derive_from_key($subkey_len, $subkey_id, $context, $key)
642
-    {
643
-        return ParagonIE_Sodium_Compat::crypto_kdf_derive_from_key(
644
-            $subkey_len,
645
-            $subkey_id,
646
-            $context,
647
-            $key
648
-        );
649
-    }
632
+	/**
633
+	 * @see ParagonIE_Sodium_Compat::crypto_kdf_derive_from_key()
634
+	 * @param int $subkey_len
635
+	 * @param int $subkey_id
636
+	 * @param string $context
637
+	 * @param string $key
638
+	 * @return string
639
+	 * @throws Exception
640
+	 */
641
+	function sodium_crypto_kdf_derive_from_key($subkey_len, $subkey_id, $context, $key)
642
+	{
643
+		return ParagonIE_Sodium_Compat::crypto_kdf_derive_from_key(
644
+			$subkey_len,
645
+			$subkey_id,
646
+			$context,
647
+			$key
648
+		);
649
+	}
650 650
 }
651 651
 if (!is_callable('sodium_crypto_kx')) {
652
-    /**
653
-     * @see ParagonIE_Sodium_Compat::crypto_kx()
654
-     * @param string $my_secret
655
-     * @param string $their_public
656
-     * @param string $client_public
657
-     * @param string $server_public
658
-     * @return string
659
-     * @throws SodiumException
660
-     * @throws TypeError
661
-     */
662
-    function sodium_crypto_kx($my_secret, $their_public, $client_public, $server_public)
663
-    {
664
-        return ParagonIE_Sodium_Compat::crypto_kx(
665
-            $my_secret,
666
-            $their_public,
667
-            $client_public,
668
-            $server_public
669
-        );
670
-    }
652
+	/**
653
+	 * @see ParagonIE_Sodium_Compat::crypto_kx()
654
+	 * @param string $my_secret
655
+	 * @param string $their_public
656
+	 * @param string $client_public
657
+	 * @param string $server_public
658
+	 * @return string
659
+	 * @throws SodiumException
660
+	 * @throws TypeError
661
+	 */
662
+	function sodium_crypto_kx($my_secret, $their_public, $client_public, $server_public)
663
+	{
664
+		return ParagonIE_Sodium_Compat::crypto_kx(
665
+			$my_secret,
666
+			$their_public,
667
+			$client_public,
668
+			$server_public
669
+		);
670
+	}
671 671
 }
672 672
 if (!is_callable('sodium_crypto_kx_seed_keypair')) {
673
-    /**
674
-     * @param string $seed
675
-     * @return string
676
-     * @throws Exception
677
-     */
678
-    function sodium_crypto_kx_seed_keypair($seed)
679
-    {
680
-        return ParagonIE_Sodium_Compat::crypto_kx_seed_keypair($seed);
681
-    }
673
+	/**
674
+	 * @param string $seed
675
+	 * @return string
676
+	 * @throws Exception
677
+	 */
678
+	function sodium_crypto_kx_seed_keypair($seed)
679
+	{
680
+		return ParagonIE_Sodium_Compat::crypto_kx_seed_keypair($seed);
681
+	}
682 682
 }
683 683
 if (!is_callable('sodium_crypto_kx_keypair')) {
684
-    /**
685
-     * @return string
686
-     * @throws Exception
687
-     */
688
-    function sodium_crypto_kx_keypair()
689
-    {
690
-        return ParagonIE_Sodium_Compat::crypto_kx_keypair();
691
-    }
684
+	/**
685
+	 * @return string
686
+	 * @throws Exception
687
+	 */
688
+	function sodium_crypto_kx_keypair()
689
+	{
690
+		return ParagonIE_Sodium_Compat::crypto_kx_keypair();
691
+	}
692 692
 }
693 693
 if (!is_callable('sodium_crypto_kx_client_session_keys')) {
694
-    /**
695
-     * @param string $keypair
696
-     * @param string $serverPublicKey
697
-     * @return array{0: string, 1: string}
698
-     * @throws SodiumException
699
-     */
700
-    function sodium_crypto_kx_client_session_keys($keypair, $serverPublicKey)
701
-    {
702
-        return ParagonIE_Sodium_Compat::crypto_kx_client_session_keys($keypair, $serverPublicKey);
703
-    }
694
+	/**
695
+	 * @param string $keypair
696
+	 * @param string $serverPublicKey
697
+	 * @return array{0: string, 1: string}
698
+	 * @throws SodiumException
699
+	 */
700
+	function sodium_crypto_kx_client_session_keys($keypair, $serverPublicKey)
701
+	{
702
+		return ParagonIE_Sodium_Compat::crypto_kx_client_session_keys($keypair, $serverPublicKey);
703
+	}
704 704
 }
705 705
 if (!is_callable('sodium_crypto_kx_server_session_keys')) {
706
-    /**
707
-     * @param string $keypair
708
-     * @param string $clientPublicKey
709
-     * @return array{0: string, 1: string}
710
-     * @throws SodiumException
711
-     */
712
-    function sodium_crypto_kx_server_session_keys($keypair, $clientPublicKey)
713
-    {
714
-        return ParagonIE_Sodium_Compat::crypto_kx_server_session_keys($keypair, $clientPublicKey);
715
-    }
706
+	/**
707
+	 * @param string $keypair
708
+	 * @param string $clientPublicKey
709
+	 * @return array{0: string, 1: string}
710
+	 * @throws SodiumException
711
+	 */
712
+	function sodium_crypto_kx_server_session_keys($keypair, $clientPublicKey)
713
+	{
714
+		return ParagonIE_Sodium_Compat::crypto_kx_server_session_keys($keypair, $clientPublicKey);
715
+	}
716 716
 }
717 717
 if (!is_callable('sodium_crypto_kx_secretkey')) {
718
-    /**
719
-     * @param string $keypair
720
-     * @return string
721
-     * @throws Exception
722
-     */
723
-    function sodium_crypto_kx_secretkey($keypair)
724
-    {
725
-        return ParagonIE_Sodium_Compat::crypto_kx_secretkey($keypair);
726
-    }
718
+	/**
719
+	 * @param string $keypair
720
+	 * @return string
721
+	 * @throws Exception
722
+	 */
723
+	function sodium_crypto_kx_secretkey($keypair)
724
+	{
725
+		return ParagonIE_Sodium_Compat::crypto_kx_secretkey($keypair);
726
+	}
727 727
 }
728 728
 if (!is_callable('sodium_crypto_kx_publickey')) {
729
-    /**
730
-     * @param string $keypair
731
-     * @return string
732
-     * @throws Exception
733
-     */
734
-    function sodium_crypto_kx_publickey($keypair)
735
-    {
736
-        return ParagonIE_Sodium_Compat::crypto_kx_publickey($keypair);
737
-    }
729
+	/**
730
+	 * @param string $keypair
731
+	 * @return string
732
+	 * @throws Exception
733
+	 */
734
+	function sodium_crypto_kx_publickey($keypair)
735
+	{
736
+		return ParagonIE_Sodium_Compat::crypto_kx_publickey($keypair);
737
+	}
738 738
 }
739 739
 if (!is_callable('sodium_crypto_pwhash')) {
740
-    /**
741
-     * @see ParagonIE_Sodium_Compat::crypto_pwhash()
742
-     * @param int $outlen
743
-     * @param string $passwd
744
-     * @param string $salt
745
-     * @param int $opslimit
746
-     * @param int $memlimit
747
-     * @param int|null $algo
748
-     * @return string
749
-     * @throws SodiumException
750
-     * @throws TypeError
751
-     */
752
-    function sodium_crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit, $algo = null)
753
-    {
754
-        return ParagonIE_Sodium_Compat::crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit, $algo);
755
-    }
740
+	/**
741
+	 * @see ParagonIE_Sodium_Compat::crypto_pwhash()
742
+	 * @param int $outlen
743
+	 * @param string $passwd
744
+	 * @param string $salt
745
+	 * @param int $opslimit
746
+	 * @param int $memlimit
747
+	 * @param int|null $algo
748
+	 * @return string
749
+	 * @throws SodiumException
750
+	 * @throws TypeError
751
+	 */
752
+	function sodium_crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit, $algo = null)
753
+	{
754
+		return ParagonIE_Sodium_Compat::crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit, $algo);
755
+	}
756 756
 }
757 757
 if (!is_callable('sodium_crypto_pwhash_str')) {
758
-    /**
759
-     * @see ParagonIE_Sodium_Compat::crypto_pwhash_str()
760
-     * @param string $passwd
761
-     * @param int $opslimit
762
-     * @param int $memlimit
763
-     * @return string
764
-     * @throws SodiumException
765
-     * @throws TypeError
766
-     */
767
-    function sodium_crypto_pwhash_str($passwd, $opslimit, $memlimit)
768
-    {
769
-        return ParagonIE_Sodium_Compat::crypto_pwhash_str($passwd, $opslimit, $memlimit);
770
-    }
758
+	/**
759
+	 * @see ParagonIE_Sodium_Compat::crypto_pwhash_str()
760
+	 * @param string $passwd
761
+	 * @param int $opslimit
762
+	 * @param int $memlimit
763
+	 * @return string
764
+	 * @throws SodiumException
765
+	 * @throws TypeError
766
+	 */
767
+	function sodium_crypto_pwhash_str($passwd, $opslimit, $memlimit)
768
+	{
769
+		return ParagonIE_Sodium_Compat::crypto_pwhash_str($passwd, $opslimit, $memlimit);
770
+	}
771 771
 }
772 772
 if (!is_callable('sodium_crypto_pwhash_str_needs_rehash')) {
773
-    /**
774
-     * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_needs_rehash()
775
-     * @param string $hash
776
-     * @param int $opslimit
777
-     * @param int $memlimit
778
-     * @return bool
779
-     *
780
-     * @throws SodiumException
781
-     */
782
-    function sodium_crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit)
783
-    {
784
-        return ParagonIE_Sodium_Compat::crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit);
785
-    }
773
+	/**
774
+	 * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_needs_rehash()
775
+	 * @param string $hash
776
+	 * @param int $opslimit
777
+	 * @param int $memlimit
778
+	 * @return bool
779
+	 *
780
+	 * @throws SodiumException
781
+	 */
782
+	function sodium_crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit)
783
+	{
784
+		return ParagonIE_Sodium_Compat::crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit);
785
+	}
786 786
 }
787 787
 if (!is_callable('sodium_crypto_pwhash_str_verify')) {
788
-    /**
789
-     * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_verify()
790
-     * @param string $passwd
791
-     * @param string $hash
792
-     * @return bool
793
-     * @throws SodiumException
794
-     * @throws TypeError
795
-     */
796
-    function sodium_crypto_pwhash_str_verify($passwd, $hash)
797
-    {
798
-        return ParagonIE_Sodium_Compat::crypto_pwhash_str_verify($passwd, $hash);
799
-    }
788
+	/**
789
+	 * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_verify()
790
+	 * @param string $passwd
791
+	 * @param string $hash
792
+	 * @return bool
793
+	 * @throws SodiumException
794
+	 * @throws TypeError
795
+	 */
796
+	function sodium_crypto_pwhash_str_verify($passwd, $hash)
797
+	{
798
+		return ParagonIE_Sodium_Compat::crypto_pwhash_str_verify($passwd, $hash);
799
+	}
800 800
 }
801 801
 if (!is_callable('sodium_crypto_pwhash_scryptsalsa208sha256')) {
802
-    /**
803
-     * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256()
804
-     * @param int $outlen
805
-     * @param string $passwd
806
-     * @param string $salt
807
-     * @param int $opslimit
808
-     * @param int $memlimit
809
-     * @return string
810
-     * @throws SodiumException
811
-     * @throws TypeError
812
-     */
813
-    function sodium_crypto_pwhash_scryptsalsa208sha256($outlen, $passwd, $salt, $opslimit, $memlimit)
814
-    {
815
-        return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256($outlen, $passwd, $salt, $opslimit, $memlimit);
816
-    }
802
+	/**
803
+	 * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256()
804
+	 * @param int $outlen
805
+	 * @param string $passwd
806
+	 * @param string $salt
807
+	 * @param int $opslimit
808
+	 * @param int $memlimit
809
+	 * @return string
810
+	 * @throws SodiumException
811
+	 * @throws TypeError
812
+	 */
813
+	function sodium_crypto_pwhash_scryptsalsa208sha256($outlen, $passwd, $salt, $opslimit, $memlimit)
814
+	{
815
+		return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256($outlen, $passwd, $salt, $opslimit, $memlimit);
816
+	}
817 817
 }
818 818
 if (!is_callable('sodium_crypto_pwhash_scryptsalsa208sha256_str')) {
819
-    /**
820
-     * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str()
821
-     * @param string $passwd
822
-     * @param int $opslimit
823
-     * @param int $memlimit
824
-     * @return string
825
-     * @throws SodiumException
826
-     * @throws TypeError
827
-     */
828
-    function sodium_crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit)
829
-    {
830
-        return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit);
831
-    }
819
+	/**
820
+	 * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str()
821
+	 * @param string $passwd
822
+	 * @param int $opslimit
823
+	 * @param int $memlimit
824
+	 * @return string
825
+	 * @throws SodiumException
826
+	 * @throws TypeError
827
+	 */
828
+	function sodium_crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit)
829
+	{
830
+		return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit);
831
+	}
832 832
 }
833 833
 if (!is_callable('sodium_crypto_pwhash_scryptsalsa208sha256_str_verify')) {
834
-    /**
835
-     * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify()
836
-     * @param string $passwd
837
-     * @param string $hash
838
-     * @return bool
839
-     * @throws SodiumException
840
-     * @throws TypeError
841
-     */
842
-    function sodium_crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash)
843
-    {
844
-        return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash);
845
-    }
834
+	/**
835
+	 * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify()
836
+	 * @param string $passwd
837
+	 * @param string $hash
838
+	 * @return bool
839
+	 * @throws SodiumException
840
+	 * @throws TypeError
841
+	 */
842
+	function sodium_crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash)
843
+	{
844
+		return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash);
845
+	}
846 846
 }
847 847
 if (!is_callable('sodium_crypto_scalarmult')) {
848
-    /**
849
-     * @see ParagonIE_Sodium_Compat::crypto_scalarmult()
850
-     * @param string $n
851
-     * @param string $p
852
-     * @return string
853
-     * @throws SodiumException
854
-     * @throws TypeError
855
-     */
856
-    function sodium_crypto_scalarmult($n, $p)
857
-    {
858
-        return ParagonIE_Sodium_Compat::crypto_scalarmult($n, $p);
859
-    }
848
+	/**
849
+	 * @see ParagonIE_Sodium_Compat::crypto_scalarmult()
850
+	 * @param string $n
851
+	 * @param string $p
852
+	 * @return string
853
+	 * @throws SodiumException
854
+	 * @throws TypeError
855
+	 */
856
+	function sodium_crypto_scalarmult($n, $p)
857
+	{
858
+		return ParagonIE_Sodium_Compat::crypto_scalarmult($n, $p);
859
+	}
860 860
 }
861 861
 if (!is_callable('sodium_crypto_scalarmult_base')) {
862
-    /**
863
-     * @see ParagonIE_Sodium_Compat::crypto_scalarmult_base()
864
-     * @param string $n
865
-     * @return string
866
-     * @throws SodiumException
867
-     * @throws TypeError
868
-     */
869
-    function sodium_crypto_scalarmult_base($n)
870
-    {
871
-        return ParagonIE_Sodium_Compat::crypto_scalarmult_base($n);
872
-    }
862
+	/**
863
+	 * @see ParagonIE_Sodium_Compat::crypto_scalarmult_base()
864
+	 * @param string $n
865
+	 * @return string
866
+	 * @throws SodiumException
867
+	 * @throws TypeError
868
+	 */
869
+	function sodium_crypto_scalarmult_base($n)
870
+	{
871
+		return ParagonIE_Sodium_Compat::crypto_scalarmult_base($n);
872
+	}
873 873
 }
874 874
 if (!is_callable('sodium_crypto_secretbox')) {
875
-    /**
876
-     * @see ParagonIE_Sodium_Compat::crypto_secretbox()
877
-     * @param string $message
878
-     * @param string $nonce
879
-     * @param string $key
880
-     * @return string
881
-     * @throws SodiumException
882
-     * @throws TypeError
883
-     */
884
-    function sodium_crypto_secretbox($message, $nonce, $key)
885
-    {
886
-        return ParagonIE_Sodium_Compat::crypto_secretbox($message, $nonce, $key);
887
-    }
875
+	/**
876
+	 * @see ParagonIE_Sodium_Compat::crypto_secretbox()
877
+	 * @param string $message
878
+	 * @param string $nonce
879
+	 * @param string $key
880
+	 * @return string
881
+	 * @throws SodiumException
882
+	 * @throws TypeError
883
+	 */
884
+	function sodium_crypto_secretbox($message, $nonce, $key)
885
+	{
886
+		return ParagonIE_Sodium_Compat::crypto_secretbox($message, $nonce, $key);
887
+	}
888 888
 }
889 889
 if (!is_callable('sodium_crypto_secretbox_keygen')) {
890
-    /**
891
-     * @see ParagonIE_Sodium_Compat::crypto_secretbox_keygen()
892
-     * @return string
893
-     * @throws Exception
894
-     */
895
-    function sodium_crypto_secretbox_keygen()
896
-    {
897
-        return ParagonIE_Sodium_Compat::crypto_secretbox_keygen();
898
-    }
890
+	/**
891
+	 * @see ParagonIE_Sodium_Compat::crypto_secretbox_keygen()
892
+	 * @return string
893
+	 * @throws Exception
894
+	 */
895
+	function sodium_crypto_secretbox_keygen()
896
+	{
897
+		return ParagonIE_Sodium_Compat::crypto_secretbox_keygen();
898
+	}
899 899
 }
900 900
 if (!is_callable('sodium_crypto_secretbox_open')) {
901
-    /**
902
-     * @see ParagonIE_Sodium_Compat::crypto_secretbox_open()
903
-     * @param string $message
904
-     * @param string $nonce
905
-     * @param string $key
906
-     * @return string|bool
907
-     */
908
-    function sodium_crypto_secretbox_open($message, $nonce, $key)
909
-    {
910
-        try {
911
-            return ParagonIE_Sodium_Compat::crypto_secretbox_open($message, $nonce, $key);
912
-        } catch (Error $ex) {
913
-            return false;
914
-        } catch (Exception $ex) {
915
-            return false;
916
-        }
917
-    }
901
+	/**
902
+	 * @see ParagonIE_Sodium_Compat::crypto_secretbox_open()
903
+	 * @param string $message
904
+	 * @param string $nonce
905
+	 * @param string $key
906
+	 * @return string|bool
907
+	 */
908
+	function sodium_crypto_secretbox_open($message, $nonce, $key)
909
+	{
910
+		try {
911
+			return ParagonIE_Sodium_Compat::crypto_secretbox_open($message, $nonce, $key);
912
+		} catch (Error $ex) {
913
+			return false;
914
+		} catch (Exception $ex) {
915
+			return false;
916
+		}
917
+	}
918 918
 }
919 919
 if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_init_push')) {
920
-    /**
921
-     * @param string $key
922
-     * @return array<int, string>
923
-     * @throws SodiumException
924
-     */
925
-    function sodium_crypto_secretstream_xchacha20poly1305_init_push($key)
926
-    {
927
-        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_push($key);
928
-    }
920
+	/**
921
+	 * @param string $key
922
+	 * @return array<int, string>
923
+	 * @throws SodiumException
924
+	 */
925
+	function sodium_crypto_secretstream_xchacha20poly1305_init_push($key)
926
+	{
927
+		return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_push($key);
928
+	}
929 929
 }
930 930
 if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_push')) {
931
-    /**
932
-     * @param string $state
933
-     * @param string $msg
934
-     * @param string $aad
935
-     * @param int $tag
936
-     * @return string
937
-     * @throws SodiumException
938
-     */
939
-    function sodium_crypto_secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0)
940
-    {
941
-        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_push($state, $msg, $aad, $tag);
942
-    }
931
+	/**
932
+	 * @param string $state
933
+	 * @param string $msg
934
+	 * @param string $aad
935
+	 * @param int $tag
936
+	 * @return string
937
+	 * @throws SodiumException
938
+	 */
939
+	function sodium_crypto_secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0)
940
+	{
941
+		return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_push($state, $msg, $aad, $tag);
942
+	}
943 943
 }
944 944
 if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_init_pull')) {
945
-    /**
946
-     * @param string $header
947
-     * @param string $key
948
-     * @return string
949
-     * @throws Exception
950
-     */
951
-    function sodium_crypto_secretstream_xchacha20poly1305_init_pull($header, $key)
952
-    {
953
-        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_pull($header, $key);
954
-    }
945
+	/**
946
+	 * @param string $header
947
+	 * @param string $key
948
+	 * @return string
949
+	 * @throws Exception
950
+	 */
951
+	function sodium_crypto_secretstream_xchacha20poly1305_init_pull($header, $key)
952
+	{
953
+		return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_pull($header, $key);
954
+	}
955 955
 }
956 956
 if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_pull')) {
957
-    /**
958
-     * @param string $state
959
-     * @param string $cipher
960
-     * @param string $aad
961
-     * @return bool|array{0: string, 1: int}
962
-     * @throws SodiumException
963
-     */
964
-    function sodium_crypto_secretstream_xchacha20poly1305_pull(&$state, $cipher, $aad = '')
965
-    {
966
-        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_pull($state, $cipher, $aad);
967
-    }
957
+	/**
958
+	 * @param string $state
959
+	 * @param string $cipher
960
+	 * @param string $aad
961
+	 * @return bool|array{0: string, 1: int}
962
+	 * @throws SodiumException
963
+	 */
964
+	function sodium_crypto_secretstream_xchacha20poly1305_pull(&$state, $cipher, $aad = '')
965
+	{
966
+		return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_pull($state, $cipher, $aad);
967
+	}
968 968
 }
969 969
 if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_rekey')) {
970
-    /**
971
-     * @param string $state
972
-     * @return void
973
-     * @throws SodiumException
974
-     */
975
-    function sodium_crypto_secretstream_xchacha20poly1305_rekey(&$state)
976
-    {
977
-        ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_rekey($state);
978
-    }
970
+	/**
971
+	 * @param string $state
972
+	 * @return void
973
+	 * @throws SodiumException
974
+	 */
975
+	function sodium_crypto_secretstream_xchacha20poly1305_rekey(&$state)
976
+	{
977
+		ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_rekey($state);
978
+	}
979 979
 }
980 980
 if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_keygen')) {
981
-    /**
982
-     * @return string
983
-     * @throws Exception
984
-     */
985
-    function sodium_crypto_secretstream_xchacha20poly1305_keygen()
986
-    {
987
-        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_keygen();
988
-    }
981
+	/**
982
+	 * @return string
983
+	 * @throws Exception
984
+	 */
985
+	function sodium_crypto_secretstream_xchacha20poly1305_keygen()
986
+	{
987
+		return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_keygen();
988
+	}
989 989
 }
990 990
 if (!is_callable('sodium_crypto_shorthash')) {
991
-    /**
992
-     * @see ParagonIE_Sodium_Compat::crypto_shorthash()
993
-     * @param string $message
994
-     * @param string $key
995
-     * @return string
996
-     * @throws SodiumException
997
-     * @throws TypeError
998
-     */
999
-    function sodium_crypto_shorthash($message, $key = '')
1000
-    {
1001
-        return ParagonIE_Sodium_Compat::crypto_shorthash($message, $key);
1002
-    }
991
+	/**
992
+	 * @see ParagonIE_Sodium_Compat::crypto_shorthash()
993
+	 * @param string $message
994
+	 * @param string $key
995
+	 * @return string
996
+	 * @throws SodiumException
997
+	 * @throws TypeError
998
+	 */
999
+	function sodium_crypto_shorthash($message, $key = '')
1000
+	{
1001
+		return ParagonIE_Sodium_Compat::crypto_shorthash($message, $key);
1002
+	}
1003 1003
 }
1004 1004
 if (!is_callable('sodium_crypto_shorthash_keygen')) {
1005
-    /**
1006
-     * @see ParagonIE_Sodium_Compat::crypto_shorthash_keygen()
1007
-     * @return string
1008
-     * @throws Exception
1009
-     */
1010
-    function sodium_crypto_shorthash_keygen()
1011
-    {
1012
-        return ParagonIE_Sodium_Compat::crypto_shorthash_keygen();
1013
-    }
1005
+	/**
1006
+	 * @see ParagonIE_Sodium_Compat::crypto_shorthash_keygen()
1007
+	 * @return string
1008
+	 * @throws Exception
1009
+	 */
1010
+	function sodium_crypto_shorthash_keygen()
1011
+	{
1012
+		return ParagonIE_Sodium_Compat::crypto_shorthash_keygen();
1013
+	}
1014 1014
 }
1015 1015
 if (!is_callable('sodium_crypto_sign')) {
1016
-    /**
1017
-     * @see ParagonIE_Sodium_Compat::crypto_sign()
1018
-     * @param string $message
1019
-     * @param string $sk
1020
-     * @return string
1021
-     * @throws SodiumException
1022
-     * @throws TypeError
1023
-     */
1024
-    function sodium_crypto_sign($message, $sk)
1025
-    {
1026
-        return ParagonIE_Sodium_Compat::crypto_sign($message, $sk);
1027
-    }
1016
+	/**
1017
+	 * @see ParagonIE_Sodium_Compat::crypto_sign()
1018
+	 * @param string $message
1019
+	 * @param string $sk
1020
+	 * @return string
1021
+	 * @throws SodiumException
1022
+	 * @throws TypeError
1023
+	 */
1024
+	function sodium_crypto_sign($message, $sk)
1025
+	{
1026
+		return ParagonIE_Sodium_Compat::crypto_sign($message, $sk);
1027
+	}
1028 1028
 }
1029 1029
 if (!is_callable('sodium_crypto_sign_detached')) {
1030
-    /**
1031
-     * @see ParagonIE_Sodium_Compat::crypto_sign_detached()
1032
-     * @param string $message
1033
-     * @param string $sk
1034
-     * @return string
1035
-     * @throws SodiumException
1036
-     * @throws TypeError
1037
-     */
1038
-    function sodium_crypto_sign_detached($message, $sk)
1039
-    {
1040
-        return ParagonIE_Sodium_Compat::crypto_sign_detached($message, $sk);
1041
-    }
1030
+	/**
1031
+	 * @see ParagonIE_Sodium_Compat::crypto_sign_detached()
1032
+	 * @param string $message
1033
+	 * @param string $sk
1034
+	 * @return string
1035
+	 * @throws SodiumException
1036
+	 * @throws TypeError
1037
+	 */
1038
+	function sodium_crypto_sign_detached($message, $sk)
1039
+	{
1040
+		return ParagonIE_Sodium_Compat::crypto_sign_detached($message, $sk);
1041
+	}
1042 1042
 }
1043 1043
 if (!is_callable('sodium_crypto_sign_keypair_from_secretkey_and_publickey')) {
1044
-    /**
1045
-     * @see ParagonIE_Sodium_Compat::crypto_sign_keypair_from_secretkey_and_publickey()
1046
-     * @param string $sk
1047
-     * @param string $pk
1048
-     * @return string
1049
-     * @throws SodiumException
1050
-     * @throws TypeError
1051
-     */
1052
-    function sodium_crypto_sign_keypair_from_secretkey_and_publickey($sk, $pk)
1053
-    {
1054
-        return ParagonIE_Sodium_Compat::crypto_sign_keypair_from_secretkey_and_publickey($sk, $pk);
1055
-    }
1044
+	/**
1045
+	 * @see ParagonIE_Sodium_Compat::crypto_sign_keypair_from_secretkey_and_publickey()
1046
+	 * @param string $sk
1047
+	 * @param string $pk
1048
+	 * @return string
1049
+	 * @throws SodiumException
1050
+	 * @throws TypeError
1051
+	 */
1052
+	function sodium_crypto_sign_keypair_from_secretkey_and_publickey($sk, $pk)
1053
+	{
1054
+		return ParagonIE_Sodium_Compat::crypto_sign_keypair_from_secretkey_and_publickey($sk, $pk);
1055
+	}
1056 1056
 }
1057 1057
 if (!is_callable('sodium_crypto_sign_keypair')) {
1058
-    /**
1059
-     * @see ParagonIE_Sodium_Compat::crypto_sign_keypair()
1060
-     * @return string
1061
-     * @throws SodiumException
1062
-     * @throws TypeError
1063
-     */
1064
-    function sodium_crypto_sign_keypair()
1065
-    {
1066
-        return ParagonIE_Sodium_Compat::crypto_sign_keypair();
1067
-    }
1058
+	/**
1059
+	 * @see ParagonIE_Sodium_Compat::crypto_sign_keypair()
1060
+	 * @return string
1061
+	 * @throws SodiumException
1062
+	 * @throws TypeError
1063
+	 */
1064
+	function sodium_crypto_sign_keypair()
1065
+	{
1066
+		return ParagonIE_Sodium_Compat::crypto_sign_keypair();
1067
+	}
1068 1068
 }
1069 1069
 if (!is_callable('sodium_crypto_sign_open')) {
1070
-    /**
1071
-     * @see ParagonIE_Sodium_Compat::crypto_sign_open()
1072
-     * @param string $signedMessage
1073
-     * @param string $pk
1074
-     * @return string|bool
1075
-     */
1076
-    function sodium_crypto_sign_open($signedMessage, $pk)
1077
-    {
1078
-        try {
1079
-            return ParagonIE_Sodium_Compat::crypto_sign_open($signedMessage, $pk);
1080
-        } catch (Error $ex) {
1081
-            return false;
1082
-        } catch (Exception $ex) {
1083
-            return false;
1084
-        }
1085
-    }
1070
+	/**
1071
+	 * @see ParagonIE_Sodium_Compat::crypto_sign_open()
1072
+	 * @param string $signedMessage
1073
+	 * @param string $pk
1074
+	 * @return string|bool
1075
+	 */
1076
+	function sodium_crypto_sign_open($signedMessage, $pk)
1077
+	{
1078
+		try {
1079
+			return ParagonIE_Sodium_Compat::crypto_sign_open($signedMessage, $pk);
1080
+		} catch (Error $ex) {
1081
+			return false;
1082
+		} catch (Exception $ex) {
1083
+			return false;
1084
+		}
1085
+	}
1086 1086
 }
1087 1087
 if (!is_callable('sodium_crypto_sign_publickey')) {
1088
-    /**
1089
-     * @see ParagonIE_Sodium_Compat::crypto_sign_publickey()
1090
-     * @param string $keypair
1091
-     * @return string
1092
-     * @throws SodiumException
1093
-     * @throws TypeError
1094
-     */
1095
-    function sodium_crypto_sign_publickey($keypair)
1096
-    {
1097
-        return ParagonIE_Sodium_Compat::crypto_sign_publickey($keypair);
1098
-    }
1088
+	/**
1089
+	 * @see ParagonIE_Sodium_Compat::crypto_sign_publickey()
1090
+	 * @param string $keypair
1091
+	 * @return string
1092
+	 * @throws SodiumException
1093
+	 * @throws TypeError
1094
+	 */
1095
+	function sodium_crypto_sign_publickey($keypair)
1096
+	{
1097
+		return ParagonIE_Sodium_Compat::crypto_sign_publickey($keypair);
1098
+	}
1099 1099
 }
1100 1100
 if (!is_callable('sodium_crypto_sign_publickey_from_secretkey')) {
1101
-    /**
1102
-     * @see ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey()
1103
-     * @param string $sk
1104
-     * @return string
1105
-     * @throws SodiumException
1106
-     * @throws TypeError
1107
-     */
1108
-    function sodium_crypto_sign_publickey_from_secretkey($sk)
1109
-    {
1110
-        return ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey($sk);
1111
-    }
1101
+	/**
1102
+	 * @see ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey()
1103
+	 * @param string $sk
1104
+	 * @return string
1105
+	 * @throws SodiumException
1106
+	 * @throws TypeError
1107
+	 */
1108
+	function sodium_crypto_sign_publickey_from_secretkey($sk)
1109
+	{
1110
+		return ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey($sk);
1111
+	}
1112 1112
 }
1113 1113
 if (!is_callable('sodium_crypto_sign_secretkey')) {
1114
-    /**
1115
-     * @see ParagonIE_Sodium_Compat::crypto_sign_secretkey()
1116
-     * @param string $keypair
1117
-     * @return string
1118
-     * @throws SodiumException
1119
-     * @throws TypeError
1120
-     */
1121
-    function sodium_crypto_sign_secretkey($keypair)
1122
-    {
1123
-        return ParagonIE_Sodium_Compat::crypto_sign_secretkey($keypair);
1124
-    }
1114
+	/**
1115
+	 * @see ParagonIE_Sodium_Compat::crypto_sign_secretkey()
1116
+	 * @param string $keypair
1117
+	 * @return string
1118
+	 * @throws SodiumException
1119
+	 * @throws TypeError
1120
+	 */
1121
+	function sodium_crypto_sign_secretkey($keypair)
1122
+	{
1123
+		return ParagonIE_Sodium_Compat::crypto_sign_secretkey($keypair);
1124
+	}
1125 1125
 }
1126 1126
 if (!is_callable('sodium_crypto_sign_seed_keypair')) {
1127
-    /**
1128
-     * @see ParagonIE_Sodium_Compat::crypto_sign_seed_keypair()
1129
-     * @param string $seed
1130
-     * @return string
1131
-     * @throws SodiumException
1132
-     * @throws TypeError
1133
-     */
1134
-    function sodium_crypto_sign_seed_keypair($seed)
1135
-    {
1136
-        return ParagonIE_Sodium_Compat::crypto_sign_seed_keypair($seed);
1137
-    }
1127
+	/**
1128
+	 * @see ParagonIE_Sodium_Compat::crypto_sign_seed_keypair()
1129
+	 * @param string $seed
1130
+	 * @return string
1131
+	 * @throws SodiumException
1132
+	 * @throws TypeError
1133
+	 */
1134
+	function sodium_crypto_sign_seed_keypair($seed)
1135
+	{
1136
+		return ParagonIE_Sodium_Compat::crypto_sign_seed_keypair($seed);
1137
+	}
1138 1138
 }
1139 1139
 if (!is_callable('sodium_crypto_sign_verify_detached')) {
1140
-    /**
1141
-     * @see ParagonIE_Sodium_Compat::crypto_sign_verify_detached()
1142
-     * @param string $signature
1143
-     * @param string $message
1144
-     * @param string $pk
1145
-     * @return bool
1146
-     * @throws SodiumException
1147
-     * @throws TypeError
1148
-     */
1149
-    function sodium_crypto_sign_verify_detached($signature, $message, $pk)
1150
-    {
1151
-        return ParagonIE_Sodium_Compat::crypto_sign_verify_detached($signature, $message, $pk);
1152
-    }
1140
+	/**
1141
+	 * @see ParagonIE_Sodium_Compat::crypto_sign_verify_detached()
1142
+	 * @param string $signature
1143
+	 * @param string $message
1144
+	 * @param string $pk
1145
+	 * @return bool
1146
+	 * @throws SodiumException
1147
+	 * @throws TypeError
1148
+	 */
1149
+	function sodium_crypto_sign_verify_detached($signature, $message, $pk)
1150
+	{
1151
+		return ParagonIE_Sodium_Compat::crypto_sign_verify_detached($signature, $message, $pk);
1152
+	}
1153 1153
 }
1154 1154
 if (!is_callable('sodium_crypto_sign_ed25519_pk_to_curve25519')) {
1155
-    /**
1156
-     * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519()
1157
-     * @param string $pk
1158
-     * @return string
1159
-     * @throws SodiumException
1160
-     * @throws TypeError
1161
-     */
1162
-    function sodium_crypto_sign_ed25519_pk_to_curve25519($pk)
1163
-    {
1164
-        return ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519($pk);
1165
-    }
1155
+	/**
1156
+	 * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519()
1157
+	 * @param string $pk
1158
+	 * @return string
1159
+	 * @throws SodiumException
1160
+	 * @throws TypeError
1161
+	 */
1162
+	function sodium_crypto_sign_ed25519_pk_to_curve25519($pk)
1163
+	{
1164
+		return ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519($pk);
1165
+	}
1166 1166
 }
1167 1167
 if (!is_callable('sodium_crypto_sign_ed25519_sk_to_curve25519')) {
1168
-    /**
1169
-     * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519()
1170
-     * @param string $sk
1171
-     * @return string
1172
-     * @throws SodiumException
1173
-     * @throws TypeError
1174
-     */
1175
-    function sodium_crypto_sign_ed25519_sk_to_curve25519($sk)
1176
-    {
1177
-        return ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519($sk);
1178
-    }
1168
+	/**
1169
+	 * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519()
1170
+	 * @param string $sk
1171
+	 * @return string
1172
+	 * @throws SodiumException
1173
+	 * @throws TypeError
1174
+	 */
1175
+	function sodium_crypto_sign_ed25519_sk_to_curve25519($sk)
1176
+	{
1177
+		return ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519($sk);
1178
+	}
1179 1179
 }
1180 1180
 if (!is_callable('sodium_crypto_stream')) {
1181
-    /**
1182
-     * @see ParagonIE_Sodium_Compat::crypto_stream()
1183
-     * @param int $len
1184
-     * @param string $nonce
1185
-     * @param string $key
1186
-     * @return string
1187
-     * @throws SodiumException
1188
-     * @throws TypeError
1189
-     */
1190
-    function sodium_crypto_stream($len, $nonce, $key)
1191
-    {
1192
-        return ParagonIE_Sodium_Compat::crypto_stream($len, $nonce, $key);
1193
-    }
1181
+	/**
1182
+	 * @see ParagonIE_Sodium_Compat::crypto_stream()
1183
+	 * @param int $len
1184
+	 * @param string $nonce
1185
+	 * @param string $key
1186
+	 * @return string
1187
+	 * @throws SodiumException
1188
+	 * @throws TypeError
1189
+	 */
1190
+	function sodium_crypto_stream($len, $nonce, $key)
1191
+	{
1192
+		return ParagonIE_Sodium_Compat::crypto_stream($len, $nonce, $key);
1193
+	}
1194 1194
 }
1195 1195
 if (!is_callable('sodium_crypto_stream_keygen')) {
1196
-    /**
1197
-     * @see ParagonIE_Sodium_Compat::crypto_stream_keygen()
1198
-     * @return string
1199
-     * @throws Exception
1200
-     */
1201
-    function sodium_crypto_stream_keygen()
1202
-    {
1203
-        return ParagonIE_Sodium_Compat::crypto_stream_keygen();
1204
-    }
1196
+	/**
1197
+	 * @see ParagonIE_Sodium_Compat::crypto_stream_keygen()
1198
+	 * @return string
1199
+	 * @throws Exception
1200
+	 */
1201
+	function sodium_crypto_stream_keygen()
1202
+	{
1203
+		return ParagonIE_Sodium_Compat::crypto_stream_keygen();
1204
+	}
1205 1205
 }
1206 1206
 if (!is_callable('sodium_crypto_stream_xor')) {
1207
-    /**
1208
-     * @see ParagonIE_Sodium_Compat::crypto_stream_xor()
1209
-     * @param string $message
1210
-     * @param string $nonce
1211
-     * @param string $key
1212
-     * @return string
1213
-     * @throws SodiumException
1214
-     * @throws TypeError
1215
-     */
1216
-    function sodium_crypto_stream_xor($message, $nonce, $key)
1217
-    {
1218
-        return ParagonIE_Sodium_Compat::crypto_stream_xor($message, $nonce, $key);
1219
-    }
1207
+	/**
1208
+	 * @see ParagonIE_Sodium_Compat::crypto_stream_xor()
1209
+	 * @param string $message
1210
+	 * @param string $nonce
1211
+	 * @param string $key
1212
+	 * @return string
1213
+	 * @throws SodiumException
1214
+	 * @throws TypeError
1215
+	 */
1216
+	function sodium_crypto_stream_xor($message, $nonce, $key)
1217
+	{
1218
+		return ParagonIE_Sodium_Compat::crypto_stream_xor($message, $nonce, $key);
1219
+	}
1220 1220
 }
1221 1221
 require_once dirname(__FILE__) . '/stream-xchacha20.php';
1222 1222
 if (!is_callable('sodium_hex2bin')) {
1223
-    /**
1224
-     * @see ParagonIE_Sodium_Compat::hex2bin()
1225
-     * @param string $string
1226
-     * @return string
1227
-     * @throws SodiumException
1228
-     * @throws TypeError
1229
-     */
1230
-    function sodium_hex2bin($string)
1231
-    {
1232
-        return ParagonIE_Sodium_Compat::hex2bin($string);
1233
-    }
1223
+	/**
1224
+	 * @see ParagonIE_Sodium_Compat::hex2bin()
1225
+	 * @param string $string
1226
+	 * @return string
1227
+	 * @throws SodiumException
1228
+	 * @throws TypeError
1229
+	 */
1230
+	function sodium_hex2bin($string)
1231
+	{
1232
+		return ParagonIE_Sodium_Compat::hex2bin($string);
1233
+	}
1234 1234
 }
1235 1235
 if (!is_callable('sodium_increment')) {
1236
-    /**
1237
-     * @see ParagonIE_Sodium_Compat::increment()
1238
-     * @param string $string
1239
-     * @return void
1240
-     * @throws SodiumException
1241
-     * @throws TypeError
1242
-     */
1243
-    function sodium_increment(&$string)
1244
-    {
1245
-        ParagonIE_Sodium_Compat::increment($string);
1246
-    }
1236
+	/**
1237
+	 * @see ParagonIE_Sodium_Compat::increment()
1238
+	 * @param string $string
1239
+	 * @return void
1240
+	 * @throws SodiumException
1241
+	 * @throws TypeError
1242
+	 */
1243
+	function sodium_increment(&$string)
1244
+	{
1245
+		ParagonIE_Sodium_Compat::increment($string);
1246
+	}
1247 1247
 }
1248 1248
 if (!is_callable('sodium_library_version_major')) {
1249
-    /**
1250
-     * @see ParagonIE_Sodium_Compat::library_version_major()
1251
-     * @return int
1252
-     */
1253
-    function sodium_library_version_major()
1254
-    {
1255
-        return ParagonIE_Sodium_Compat::library_version_major();
1256
-    }
1249
+	/**
1250
+	 * @see ParagonIE_Sodium_Compat::library_version_major()
1251
+	 * @return int
1252
+	 */
1253
+	function sodium_library_version_major()
1254
+	{
1255
+		return ParagonIE_Sodium_Compat::library_version_major();
1256
+	}
1257 1257
 }
1258 1258
 if (!is_callable('sodium_library_version_minor')) {
1259
-    /**
1260
-     * @see ParagonIE_Sodium_Compat::library_version_minor()
1261
-     * @return int
1262
-     */
1263
-    function sodium_library_version_minor()
1264
-    {
1265
-        return ParagonIE_Sodium_Compat::library_version_minor();
1266
-    }
1259
+	/**
1260
+	 * @see ParagonIE_Sodium_Compat::library_version_minor()
1261
+	 * @return int
1262
+	 */
1263
+	function sodium_library_version_minor()
1264
+	{
1265
+		return ParagonIE_Sodium_Compat::library_version_minor();
1266
+	}
1267 1267
 }
1268 1268
 if (!is_callable('sodium_version_string')) {
1269
-    /**
1270
-     * @see ParagonIE_Sodium_Compat::version_string()
1271
-     * @return string
1272
-     */
1273
-    function sodium_version_string()
1274
-    {
1275
-        return ParagonIE_Sodium_Compat::version_string();
1276
-    }
1269
+	/**
1270
+	 * @see ParagonIE_Sodium_Compat::version_string()
1271
+	 * @return string
1272
+	 */
1273
+	function sodium_version_string()
1274
+	{
1275
+		return ParagonIE_Sodium_Compat::version_string();
1276
+	}
1277 1277
 }
1278 1278
 if (!is_callable('sodium_memcmp')) {
1279
-    /**
1280
-     * @see ParagonIE_Sodium_Compat::memcmp()
1281
-     * @param string $a
1282
-     * @param string $b
1283
-     * @return int
1284
-     * @throws SodiumException
1285
-     * @throws TypeError
1286
-     */
1287
-    function sodium_memcmp($a, $b)
1288
-    {
1289
-        return ParagonIE_Sodium_Compat::memcmp($a, $b);
1290
-    }
1279
+	/**
1280
+	 * @see ParagonIE_Sodium_Compat::memcmp()
1281
+	 * @param string $a
1282
+	 * @param string $b
1283
+	 * @return int
1284
+	 * @throws SodiumException
1285
+	 * @throws TypeError
1286
+	 */
1287
+	function sodium_memcmp($a, $b)
1288
+	{
1289
+		return ParagonIE_Sodium_Compat::memcmp($a, $b);
1290
+	}
1291 1291
 }
1292 1292
 if (!is_callable('sodium_memzero')) {
1293
-    /**
1294
-     * @see ParagonIE_Sodium_Compat::memzero()
1295
-     * @param string $str
1296
-     * @return void
1297
-     * @throws SodiumException
1298
-     * @throws TypeError
1299
-     */
1300
-    function sodium_memzero(&$str)
1301
-    {
1302
-        ParagonIE_Sodium_Compat::memzero($str);
1303
-    }
1293
+	/**
1294
+	 * @see ParagonIE_Sodium_Compat::memzero()
1295
+	 * @param string $str
1296
+	 * @return void
1297
+	 * @throws SodiumException
1298
+	 * @throws TypeError
1299
+	 */
1300
+	function sodium_memzero(&$str)
1301
+	{
1302
+		ParagonIE_Sodium_Compat::memzero($str);
1303
+	}
1304 1304
 }
1305 1305
 if (!is_callable('sodium_pad')) {
1306
-    /**
1307
-     * @see ParagonIE_Sodium_Compat::pad()
1308
-     * @param string $unpadded
1309
-     * @param int $blockSize
1310
-     * @return int
1311
-     * @throws SodiumException
1312
-     * @throws TypeError
1313
-     */
1314
-    function sodium_pad($unpadded, $blockSize)
1315
-    {
1316
-        return ParagonIE_Sodium_Compat::pad($unpadded, $blockSize, true);
1317
-    }
1306
+	/**
1307
+	 * @see ParagonIE_Sodium_Compat::pad()
1308
+	 * @param string $unpadded
1309
+	 * @param int $blockSize
1310
+	 * @return int
1311
+	 * @throws SodiumException
1312
+	 * @throws TypeError
1313
+	 */
1314
+	function sodium_pad($unpadded, $blockSize)
1315
+	{
1316
+		return ParagonIE_Sodium_Compat::pad($unpadded, $blockSize, true);
1317
+	}
1318 1318
 }
1319 1319
 if (!is_callable('sodium_unpad')) {
1320
-    /**
1321
-     * @see ParagonIE_Sodium_Compat::pad()
1322
-     * @param string $padded
1323
-     * @param int $blockSize
1324
-     * @return int
1325
-     * @throws SodiumException
1326
-     * @throws TypeError
1327
-     */
1328
-    function sodium_unpad($padded, $blockSize)
1329
-    {
1330
-        return ParagonIE_Sodium_Compat::unpad($padded, $blockSize, true);
1331
-    }
1320
+	/**
1321
+	 * @see ParagonIE_Sodium_Compat::pad()
1322
+	 * @param string $padded
1323
+	 * @param int $blockSize
1324
+	 * @return int
1325
+	 * @throws SodiumException
1326
+	 * @throws TypeError
1327
+	 */
1328
+	function sodium_unpad($padded, $blockSize)
1329
+	{
1330
+		return ParagonIE_Sodium_Compat::unpad($padded, $blockSize, true);
1331
+	}
1332 1332
 }
1333 1333
 if (!is_callable('sodium_randombytes_buf')) {
1334
-    /**
1335
-     * @see ParagonIE_Sodium_Compat::randombytes_buf()
1336
-     * @param int $amount
1337
-     * @return string
1338
-     * @throws Exception
1339
-     */
1340
-    function sodium_randombytes_buf($amount)
1341
-    {
1342
-        return ParagonIE_Sodium_Compat::randombytes_buf($amount);
1343
-    }
1334
+	/**
1335
+	 * @see ParagonIE_Sodium_Compat::randombytes_buf()
1336
+	 * @param int $amount
1337
+	 * @return string
1338
+	 * @throws Exception
1339
+	 */
1340
+	function sodium_randombytes_buf($amount)
1341
+	{
1342
+		return ParagonIE_Sodium_Compat::randombytes_buf($amount);
1343
+	}
1344 1344
 }
1345 1345
 
1346 1346
 if (!is_callable('sodium_randombytes_uniform')) {
1347
-    /**
1348
-     * @see ParagonIE_Sodium_Compat::randombytes_uniform()
1349
-     * @param int $upperLimit
1350
-     * @return int
1351
-     * @throws Exception
1352
-     */
1353
-    function sodium_randombytes_uniform($upperLimit)
1354
-    {
1355
-        return ParagonIE_Sodium_Compat::randombytes_uniform($upperLimit);
1356
-    }
1347
+	/**
1348
+	 * @see ParagonIE_Sodium_Compat::randombytes_uniform()
1349
+	 * @param int $upperLimit
1350
+	 * @return int
1351
+	 * @throws Exception
1352
+	 */
1353
+	function sodium_randombytes_uniform($upperLimit)
1354
+	{
1355
+		return ParagonIE_Sodium_Compat::randombytes_uniform($upperLimit);
1356
+	}
1357 1357
 }
1358 1358
 
1359 1359
 if (!is_callable('sodium_randombytes_random16')) {
1360
-    /**
1361
-     * @see ParagonIE_Sodium_Compat::randombytes_random16()
1362
-     * @return int
1363
-     * @throws Exception
1364
-     */
1365
-    function sodium_randombytes_random16()
1366
-    {
1367
-        return ParagonIE_Sodium_Compat::randombytes_random16();
1368
-    }
1360
+	/**
1361
+	 * @see ParagonIE_Sodium_Compat::randombytes_random16()
1362
+	 * @return int
1363
+	 * @throws Exception
1364
+	 */
1365
+	function sodium_randombytes_random16()
1366
+	{
1367
+		return ParagonIE_Sodium_Compat::randombytes_random16();
1368
+	}
1369 1369
 }
Please login to merge, or discard this patch.
Spacing   +256 added lines, -256 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-require_once dirname(dirname(__FILE__)) . '/autoload.php';
3
+require_once dirname( dirname( __FILE__ ) ) . '/autoload.php';
4 4
 
5 5
 /**
6 6
  * This file will monkey patch the pure-PHP implementation in place of the
@@ -9,7 +9,7 @@  discard block
 block discarded – undo
9 9
  * Thus, the functions or constants just proxy to the appropriate
10 10
  * ParagonIE_Sodium_Compat method or class constant, respectively.
11 11
  */
12
-foreach (array(
12
+foreach ( array(
13 13
     'BASE64_VARIANT_ORIGINAL',
14 14
     'BASE64_VARIANT_ORIGINAL_NO_PADDING',
15 15
     'BASE64_VARIANT_URLSAFE',
@@ -103,11 +103,11 @@  discard block
 block discarded – undo
103 103
     'VERSION_STRING'
104 104
     ) as $constant
105 105
 ) {
106
-    if (!defined("SODIUM_$constant") && defined("ParagonIE_Sodium_Compat::$constant")) {
107
-        define("SODIUM_$constant", constant("ParagonIE_Sodium_Compat::$constant"));
106
+    if ( ! defined( "SODIUM_$constant" ) && defined( "ParagonIE_Sodium_Compat::$constant" ) ) {
107
+        define( "SODIUM_$constant", constant( "ParagonIE_Sodium_Compat::$constant" ) );
108 108
     }
109 109
 }
110
-if (!is_callable('sodium_add')) {
110
+if ( ! is_callable( 'sodium_add' ) ) {
111 111
     /**
112 112
      * @see ParagonIE_Sodium_Compat::add()
113 113
      * @param string $val
@@ -115,12 +115,12 @@  discard block
 block discarded – undo
115 115
      * @return void
116 116
      * @throws SodiumException
117 117
      */
118
-    function sodium_add(&$val, $addv)
118
+    function sodium_add( &$val, $addv )
119 119
     {
120
-        ParagonIE_Sodium_Compat::add($val, $addv);
120
+        ParagonIE_Sodium_Compat::add( $val, $addv );
121 121
     }
122 122
 }
123
-if (!is_callable('sodium_base642bin')) {
123
+if ( ! is_callable( 'sodium_base642bin' ) ) {
124 124
     /**
125 125
      * @see ParagonIE_Sodium_Compat::bin2base64()
126 126
      * @param string $string
@@ -130,12 +130,12 @@  discard block
 block discarded – undo
130 130
      * @throws SodiumException
131 131
      * @throws TypeError
132 132
      */
133
-    function sodium_base642bin($string, $variant, $ignore ='')
133
+    function sodium_base642bin( $string, $variant, $ignore = '' )
134 134
     {
135
-        return ParagonIE_Sodium_Compat::base642bin($string, $variant, $ignore);
135
+        return ParagonIE_Sodium_Compat::base642bin( $string, $variant, $ignore );
136 136
     }
137 137
 }
138
-if (!is_callable('sodium_bin2base64')) {
138
+if ( ! is_callable( 'sodium_bin2base64' ) ) {
139 139
     /**
140 140
      * @see ParagonIE_Sodium_Compat::bin2base64()
141 141
      * @param string $string
@@ -144,12 +144,12 @@  discard block
 block discarded – undo
144 144
      * @throws SodiumException
145 145
      * @throws TypeError
146 146
      */
147
-    function sodium_bin2base64($string, $variant)
147
+    function sodium_bin2base64( $string, $variant )
148 148
     {
149
-        return ParagonIE_Sodium_Compat::bin2base64($string, $variant);
149
+        return ParagonIE_Sodium_Compat::bin2base64( $string, $variant );
150 150
     }
151 151
 }
152
-if (!is_callable('sodium_bin2hex')) {
152
+if ( ! is_callable( 'sodium_bin2hex' ) ) {
153 153
     /**
154 154
      * @see ParagonIE_Sodium_Compat::hex2bin()
155 155
      * @param string $string
@@ -157,12 +157,12 @@  discard block
 block discarded – undo
157 157
      * @throws SodiumException
158 158
      * @throws TypeError
159 159
      */
160
-    function sodium_bin2hex($string)
160
+    function sodium_bin2hex( $string )
161 161
     {
162
-        return ParagonIE_Sodium_Compat::bin2hex($string);
162
+        return ParagonIE_Sodium_Compat::bin2hex( $string );
163 163
     }
164 164
 }
165
-if (!is_callable('sodium_compare')) {
165
+if ( ! is_callable( 'sodium_compare' ) ) {
166 166
     /**
167 167
      * @see ParagonIE_Sodium_Compat::compare()
168 168
      * @param string $a
@@ -171,12 +171,12 @@  discard block
 block discarded – undo
171 171
      * @throws SodiumException
172 172
      * @throws TypeError
173 173
      */
174
-    function sodium_compare($a, $b)
174
+    function sodium_compare( $a, $b )
175 175
     {
176
-        return ParagonIE_Sodium_Compat::compare($a, $b);
176
+        return ParagonIE_Sodium_Compat::compare( $a, $b );
177 177
     }
178 178
 }
179
-if (!is_callable('sodium_crypto_aead_aes256gcm_decrypt')) {
179
+if ( ! is_callable( 'sodium_crypto_aead_aes256gcm_decrypt' ) ) {
180 180
     /**
181 181
      * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt()
182 182
      * @param string $message
@@ -185,18 +185,18 @@  discard block
 block discarded – undo
185 185
      * @param string $key
186 186
      * @return string|bool
187 187
      */
188
-    function sodium_crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key)
188
+    function sodium_crypto_aead_aes256gcm_decrypt( $message, $assocData, $nonce, $key )
189 189
     {
190 190
         try {
191
-            return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key);
192
-        } catch (Error $ex) {
191
+            return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt( $message, $assocData, $nonce, $key );
192
+        } catch ( Error $ex ) {
193 193
             return false;
194
-        } catch (Exception $ex) {
194
+        } catch ( Exception $ex ) {
195 195
             return false;
196 196
         }
197 197
     }
198 198
 }
199
-if (!is_callable('sodium_crypto_aead_aes256gcm_encrypt')) {
199
+if ( ! is_callable( 'sodium_crypto_aead_aes256gcm_encrypt' ) ) {
200 200
     /**
201 201
      * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt()
202 202
      * @param string $message
@@ -207,12 +207,12 @@  discard block
 block discarded – undo
207 207
      * @throws SodiumException
208 208
      * @throws TypeError
209 209
      */
210
-    function sodium_crypto_aead_aes256gcm_encrypt($message, $assocData, $nonce, $key)
210
+    function sodium_crypto_aead_aes256gcm_encrypt( $message, $assocData, $nonce, $key )
211 211
     {
212
-        return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt($message, $assocData, $nonce, $key);
212
+        return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt( $message, $assocData, $nonce, $key );
213 213
     }
214 214
 }
215
-if (!is_callable('sodium_crypto_aead_aes256gcm_is_available')) {
215
+if ( ! is_callable( 'sodium_crypto_aead_aes256gcm_is_available' ) ) {
216 216
     /**
217 217
      * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available()
218 218
      * @return bool
@@ -222,7 +222,7 @@  discard block
 block discarded – undo
222 222
         return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available();
223 223
     }
224 224
 }
225
-if (!is_callable('sodium_crypto_aead_chacha20poly1305_decrypt')) {
225
+if ( ! is_callable( 'sodium_crypto_aead_chacha20poly1305_decrypt' ) ) {
226 226
     /**
227 227
      * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt()
228 228
      * @param string $message
@@ -231,18 +231,18 @@  discard block
 block discarded – undo
231 231
      * @param string $key
232 232
      * @return string|bool
233 233
      */
234
-    function sodium_crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key)
234
+    function sodium_crypto_aead_chacha20poly1305_decrypt( $message, $assocData, $nonce, $key )
235 235
     {
236 236
         try {
237
-            return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key);
238
-        } catch (Error $ex) {
237
+            return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt( $message, $assocData, $nonce, $key );
238
+        } catch ( Error $ex ) {
239 239
             return false;
240
-        } catch (Exception $ex) {
240
+        } catch ( Exception $ex ) {
241 241
             return false;
242 242
         }
243 243
     }
244 244
 }
245
-if (!is_callable('sodium_crypto_aead_chacha20poly1305_encrypt')) {
245
+if ( ! is_callable( 'sodium_crypto_aead_chacha20poly1305_encrypt' ) ) {
246 246
     /**
247 247
      * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt()
248 248
      * @param string $message
@@ -253,12 +253,12 @@  discard block
 block discarded – undo
253 253
      * @throws SodiumException
254 254
      * @throws TypeError
255 255
      */
256
-    function sodium_crypto_aead_chacha20poly1305_encrypt($message, $assocData, $nonce, $key)
256
+    function sodium_crypto_aead_chacha20poly1305_encrypt( $message, $assocData, $nonce, $key )
257 257
     {
258
-        return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt($message, $assocData, $nonce, $key);
258
+        return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt( $message, $assocData, $nonce, $key );
259 259
     }
260 260
 }
261
-if (!is_callable('sodium_crypto_aead_chacha20poly1305_keygen')) {
261
+if ( ! is_callable( 'sodium_crypto_aead_chacha20poly1305_keygen' ) ) {
262 262
     /**
263 263
      * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_keygen()
264 264
      * @return string
@@ -269,7 +269,7 @@  discard block
 block discarded – undo
269 269
         return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_keygen();
270 270
     }
271 271
 }
272
-if (!is_callable('sodium_crypto_aead_chacha20poly1305_ietf_decrypt')) {
272
+if ( ! is_callable( 'sodium_crypto_aead_chacha20poly1305_ietf_decrypt' ) ) {
273 273
     /**
274 274
      * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt()
275 275
      * @param string $message
@@ -278,18 +278,18 @@  discard block
 block discarded – undo
278 278
      * @param string $key
279 279
      * @return string|bool
280 280
      */
281
-    function sodium_crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key)
281
+    function sodium_crypto_aead_chacha20poly1305_ietf_decrypt( $message, $assocData, $nonce, $key )
282 282
     {
283 283
         try {
284
-            return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key);
285
-        } catch (Error $ex) {
284
+            return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt( $message, $assocData, $nonce, $key );
285
+        } catch ( Error $ex ) {
286 286
             return false;
287
-        } catch (Exception $ex) {
287
+        } catch ( Exception $ex ) {
288 288
             return false;
289 289
         }
290 290
     }
291 291
 }
292
-if (!is_callable('sodium_crypto_aead_chacha20poly1305_ietf_encrypt')) {
292
+if ( ! is_callable( 'sodium_crypto_aead_chacha20poly1305_ietf_encrypt' ) ) {
293 293
     /**
294 294
      * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt()
295 295
      * @param string $message
@@ -300,12 +300,12 @@  discard block
 block discarded – undo
300 300
      * @throws SodiumException
301 301
      * @throws TypeError
302 302
      */
303
-    function sodium_crypto_aead_chacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key)
303
+    function sodium_crypto_aead_chacha20poly1305_ietf_encrypt( $message, $assocData, $nonce, $key )
304 304
     {
305
-        return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key);
305
+        return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt( $message, $assocData, $nonce, $key );
306 306
     }
307 307
 }
308
-if (!is_callable('sodium_crypto_aead_chacha20poly1305_ietf_keygen')) {
308
+if ( ! is_callable( 'sodium_crypto_aead_chacha20poly1305_ietf_keygen' ) ) {
309 309
     /**
310 310
      * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_keygen()
311 311
      * @return string
@@ -316,7 +316,7 @@  discard block
 block discarded – undo
316 316
         return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_keygen();
317 317
     }
318 318
 }
319
-if (!is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_decrypt')) {
319
+if ( ! is_callable( 'sodium_crypto_aead_xchacha20poly1305_ietf_decrypt' ) ) {
320 320
     /**
321 321
      * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_decrypt()
322 322
      * @param string $message
@@ -325,18 +325,18 @@  discard block
 block discarded – undo
325 325
      * @param string $key
326 326
      * @return string|bool
327 327
      */
328
-    function sodium_crypto_aead_xchacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key)
328
+    function sodium_crypto_aead_xchacha20poly1305_ietf_decrypt( $message, $assocData, $nonce, $key )
329 329
     {
330 330
         try {
331
-            return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key, true);
332
-        } catch (Error $ex) {
331
+            return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_decrypt( $message, $assocData, $nonce, $key, true );
332
+        } catch ( Error $ex ) {
333 333
             return false;
334
-        } catch (Exception $ex) {
334
+        } catch ( Exception $ex ) {
335 335
             return false;
336 336
         }
337 337
     }
338 338
 }
339
-if (!is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_encrypt')) {
339
+if ( ! is_callable( 'sodium_crypto_aead_xchacha20poly1305_ietf_encrypt' ) ) {
340 340
     /**
341 341
      * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_encrypt()
342 342
      * @param string $message
@@ -347,12 +347,12 @@  discard block
 block discarded – undo
347 347
      * @throws SodiumException
348 348
      * @throws TypeError
349 349
      */
350
-    function sodium_crypto_aead_xchacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key)
350
+    function sodium_crypto_aead_xchacha20poly1305_ietf_encrypt( $message, $assocData, $nonce, $key )
351 351
     {
352
-        return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key, true);
352
+        return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_encrypt( $message, $assocData, $nonce, $key, true );
353 353
     }
354 354
 }
355
-if (!is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_keygen')) {
355
+if ( ! is_callable( 'sodium_crypto_aead_xchacha20poly1305_ietf_keygen' ) ) {
356 356
     /**
357 357
      * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_keygen()
358 358
      * @return string
@@ -363,7 +363,7 @@  discard block
 block discarded – undo
363 363
         return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_keygen();
364 364
     }
365 365
 }
366
-if (!is_callable('sodium_crypto_auth')) {
366
+if ( ! is_callable( 'sodium_crypto_auth' ) ) {
367 367
     /**
368 368
      * @see ParagonIE_Sodium_Compat::crypto_auth()
369 369
      * @param string $message
@@ -372,12 +372,12 @@  discard block
 block discarded – undo
372 372
      * @throws SodiumException
373 373
      * @throws TypeError
374 374
      */
375
-    function sodium_crypto_auth($message, $key)
375
+    function sodium_crypto_auth( $message, $key )
376 376
     {
377
-        return ParagonIE_Sodium_Compat::crypto_auth($message, $key);
377
+        return ParagonIE_Sodium_Compat::crypto_auth( $message, $key );
378 378
     }
379 379
 }
380
-if (!is_callable('sodium_crypto_auth_keygen')) {
380
+if ( ! is_callable( 'sodium_crypto_auth_keygen' ) ) {
381 381
     /**
382 382
      * @see ParagonIE_Sodium_Compat::crypto_auth_keygen()
383 383
      * @return string
@@ -388,7 +388,7 @@  discard block
 block discarded – undo
388 388
         return ParagonIE_Sodium_Compat::crypto_auth_keygen();
389 389
     }
390 390
 }
391
-if (!is_callable('sodium_crypto_auth_verify')) {
391
+if ( ! is_callable( 'sodium_crypto_auth_verify' ) ) {
392 392
     /**
393 393
      * @see ParagonIE_Sodium_Compat::crypto_auth_verify()
394 394
      * @param string $mac
@@ -398,12 +398,12 @@  discard block
 block discarded – undo
398 398
      * @throws SodiumException
399 399
      * @throws TypeError
400 400
      */
401
-    function sodium_crypto_auth_verify($mac, $message, $key)
401
+    function sodium_crypto_auth_verify( $mac, $message, $key )
402 402
     {
403
-        return ParagonIE_Sodium_Compat::crypto_auth_verify($mac, $message, $key);
403
+        return ParagonIE_Sodium_Compat::crypto_auth_verify( $mac, $message, $key );
404 404
     }
405 405
 }
406
-if (!is_callable('sodium_crypto_box')) {
406
+if ( ! is_callable( 'sodium_crypto_box' ) ) {
407 407
     /**
408 408
      * @see ParagonIE_Sodium_Compat::crypto_box()
409 409
      * @param string $message
@@ -413,12 +413,12 @@  discard block
 block discarded – undo
413 413
      * @throws SodiumException
414 414
      * @throws TypeError
415 415
      */
416
-    function sodium_crypto_box($message, $nonce, $kp)
416
+    function sodium_crypto_box( $message, $nonce, $kp )
417 417
     {
418
-        return ParagonIE_Sodium_Compat::crypto_box($message, $nonce, $kp);
418
+        return ParagonIE_Sodium_Compat::crypto_box( $message, $nonce, $kp );
419 419
     }
420 420
 }
421
-if (!is_callable('sodium_crypto_box_keypair')) {
421
+if ( ! is_callable( 'sodium_crypto_box_keypair' ) ) {
422 422
     /**
423 423
      * @see ParagonIE_Sodium_Compat::crypto_box_keypair()
424 424
      * @return string
@@ -430,7 +430,7 @@  discard block
 block discarded – undo
430 430
         return ParagonIE_Sodium_Compat::crypto_box_keypair();
431 431
     }
432 432
 }
433
-if (!is_callable('sodium_crypto_box_keypair_from_secretkey_and_publickey')) {
433
+if ( ! is_callable( 'sodium_crypto_box_keypair_from_secretkey_and_publickey' ) ) {
434 434
     /**
435 435
      * @see ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey()
436 436
      * @param string $sk
@@ -439,12 +439,12 @@  discard block
 block discarded – undo
439 439
      * @throws SodiumException
440 440
      * @throws TypeError
441 441
      */
442
-    function sodium_crypto_box_keypair_from_secretkey_and_publickey($sk, $pk)
442
+    function sodium_crypto_box_keypair_from_secretkey_and_publickey( $sk, $pk )
443 443
     {
444
-        return ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey($sk, $pk);
444
+        return ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey( $sk, $pk );
445 445
     }
446 446
 }
447
-if (!is_callable('sodium_crypto_box_open')) {
447
+if ( ! is_callable( 'sodium_crypto_box_open' ) ) {
448 448
     /**
449 449
      * @see ParagonIE_Sodium_Compat::crypto_box_open()
450 450
      * @param string $message
@@ -452,18 +452,18 @@  discard block
 block discarded – undo
452 452
      * @param string $kp
453 453
      * @return string|bool
454 454
      */
455
-    function sodium_crypto_box_open($message, $nonce, $kp)
455
+    function sodium_crypto_box_open( $message, $nonce, $kp )
456 456
     {
457 457
         try {
458
-            return ParagonIE_Sodium_Compat::crypto_box_open($message, $nonce, $kp);
459
-        } catch (Error $ex) {
458
+            return ParagonIE_Sodium_Compat::crypto_box_open( $message, $nonce, $kp );
459
+        } catch ( Error $ex ) {
460 460
             return false;
461
-        } catch (Exception $ex) {
461
+        } catch ( Exception $ex ) {
462 462
             return false;
463 463
         }
464 464
     }
465 465
 }
466
-if (!is_callable('sodium_crypto_box_publickey')) {
466
+if ( ! is_callable( 'sodium_crypto_box_publickey' ) ) {
467 467
     /**
468 468
      * @see ParagonIE_Sodium_Compat::crypto_box_publickey()
469 469
      * @param string $keypair
@@ -471,12 +471,12 @@  discard block
 block discarded – undo
471 471
      * @throws SodiumException
472 472
      * @throws TypeError
473 473
      */
474
-    function sodium_crypto_box_publickey($keypair)
474
+    function sodium_crypto_box_publickey( $keypair )
475 475
     {
476
-        return ParagonIE_Sodium_Compat::crypto_box_publickey($keypair);
476
+        return ParagonIE_Sodium_Compat::crypto_box_publickey( $keypair );
477 477
     }
478 478
 }
479
-if (!is_callable('sodium_crypto_box_publickey_from_secretkey')) {
479
+if ( ! is_callable( 'sodium_crypto_box_publickey_from_secretkey' ) ) {
480 480
     /**
481 481
      * @see ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey()
482 482
      * @param string $sk
@@ -484,12 +484,12 @@  discard block
 block discarded – undo
484 484
      * @throws SodiumException
485 485
      * @throws TypeError
486 486
      */
487
-    function sodium_crypto_box_publickey_from_secretkey($sk)
487
+    function sodium_crypto_box_publickey_from_secretkey( $sk )
488 488
     {
489
-        return ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey($sk);
489
+        return ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey( $sk );
490 490
     }
491 491
 }
492
-if (!is_callable('sodium_crypto_box_seal')) {
492
+if ( ! is_callable( 'sodium_crypto_box_seal' ) ) {
493 493
     /**
494 494
      * @see ParagonIE_Sodium_Compat::crypto_box_seal()
495 495
      * @param string $message
@@ -498,12 +498,12 @@  discard block
 block discarded – undo
498 498
      * @throws SodiumException
499 499
      * @throws TypeError
500 500
      */
501
-    function sodium_crypto_box_seal($message, $publicKey)
501
+    function sodium_crypto_box_seal( $message, $publicKey )
502 502
     {
503
-        return ParagonIE_Sodium_Compat::crypto_box_seal($message, $publicKey);
503
+        return ParagonIE_Sodium_Compat::crypto_box_seal( $message, $publicKey );
504 504
     }
505 505
 }
506
-if (!is_callable('sodium_crypto_box_seal_open')) {
506
+if ( ! is_callable( 'sodium_crypto_box_seal_open' ) ) {
507 507
     /**
508 508
      * @see ParagonIE_Sodium_Compat::crypto_box_seal_open()
509 509
      * @param string $message
@@ -511,19 +511,19 @@  discard block
 block discarded – undo
511 511
      * @return string|bool
512 512
      * @throws SodiumException
513 513
      */
514
-    function sodium_crypto_box_seal_open($message, $kp)
514
+    function sodium_crypto_box_seal_open( $message, $kp )
515 515
     {
516 516
         try {
517
-            return ParagonIE_Sodium_Compat::crypto_box_seal_open($message, $kp);
518
-        } catch (SodiumException $ex) {
519
-            if ($ex->getMessage() === 'Argument 2 must be CRYPTO_BOX_KEYPAIRBYTES long.') {
517
+            return ParagonIE_Sodium_Compat::crypto_box_seal_open( $message, $kp );
518
+        } catch ( SodiumException $ex ) {
519
+            if ( $ex->getMessage() === 'Argument 2 must be CRYPTO_BOX_KEYPAIRBYTES long.' ) {
520 520
                 throw $ex;
521 521
             }
522 522
             return false;
523 523
         }
524 524
     }
525 525
 }
526
-if (!is_callable('sodium_crypto_box_secretkey')) {
526
+if ( ! is_callable( 'sodium_crypto_box_secretkey' ) ) {
527 527
     /**
528 528
      * @see ParagonIE_Sodium_Compat::crypto_box_secretkey()
529 529
      * @param string $keypair
@@ -531,12 +531,12 @@  discard block
 block discarded – undo
531 531
      * @throws SodiumException
532 532
      * @throws TypeError
533 533
      */
534
-    function sodium_crypto_box_secretkey($keypair)
534
+    function sodium_crypto_box_secretkey( $keypair )
535 535
     {
536
-        return ParagonIE_Sodium_Compat::crypto_box_secretkey($keypair);
536
+        return ParagonIE_Sodium_Compat::crypto_box_secretkey( $keypair );
537 537
     }
538 538
 }
539
-if (!is_callable('sodium_crypto_box_seed_keypair')) {
539
+if ( ! is_callable( 'sodium_crypto_box_seed_keypair' ) ) {
540 540
     /**
541 541
      * @see ParagonIE_Sodium_Compat::crypto_box_seed_keypair()
542 542
      * @param string $seed
@@ -544,12 +544,12 @@  discard block
 block discarded – undo
544 544
      * @throws SodiumException
545 545
      * @throws TypeError
546 546
      */
547
-    function sodium_crypto_box_seed_keypair($seed)
547
+    function sodium_crypto_box_seed_keypair( $seed )
548 548
     {
549
-        return ParagonIE_Sodium_Compat::crypto_box_seed_keypair($seed);
549
+        return ParagonIE_Sodium_Compat::crypto_box_seed_keypair( $seed );
550 550
     }
551 551
 }
552
-if (!is_callable('sodium_crypto_generichash')) {
552
+if ( ! is_callable( 'sodium_crypto_generichash' ) ) {
553 553
     /**
554 554
      * @see ParagonIE_Sodium_Compat::crypto_generichash()
555 555
      * @param string $message
@@ -559,12 +559,12 @@  discard block
 block discarded – undo
559 559
      * @throws SodiumException
560 560
      * @throws TypeError
561 561
      */
562
-    function sodium_crypto_generichash($message, $key = null, $outLen = 32)
562
+    function sodium_crypto_generichash( $message, $key = null, $outLen = 32 )
563 563
     {
564
-        return ParagonIE_Sodium_Compat::crypto_generichash($message, $key, $outLen);
564
+        return ParagonIE_Sodium_Compat::crypto_generichash( $message, $key, $outLen );
565 565
     }
566 566
 }
567
-if (!is_callable('sodium_crypto_generichash_final')) {
567
+if ( ! is_callable( 'sodium_crypto_generichash_final' ) ) {
568 568
     /**
569 569
      * @see ParagonIE_Sodium_Compat::crypto_generichash_final()
570 570
      * @param string|null $ctx
@@ -573,12 +573,12 @@  discard block
 block discarded – undo
573 573
      * @throws SodiumException
574 574
      * @throws TypeError
575 575
      */
576
-    function sodium_crypto_generichash_final(&$ctx, $outputLength = 32)
576
+    function sodium_crypto_generichash_final( &$ctx, $outputLength = 32 )
577 577
     {
578
-        return ParagonIE_Sodium_Compat::crypto_generichash_final($ctx, $outputLength);
578
+        return ParagonIE_Sodium_Compat::crypto_generichash_final( $ctx, $outputLength );
579 579
     }
580 580
 }
581
-if (!is_callable('sodium_crypto_generichash_init')) {
581
+if ( ! is_callable( 'sodium_crypto_generichash_init' ) ) {
582 582
     /**
583 583
      * @see ParagonIE_Sodium_Compat::crypto_generichash_init()
584 584
      * @param string|null $key
@@ -587,12 +587,12 @@  discard block
 block discarded – undo
587 587
      * @throws SodiumException
588 588
      * @throws TypeError
589 589
      */
590
-    function sodium_crypto_generichash_init($key = null, $outLen = 32)
590
+    function sodium_crypto_generichash_init( $key = null, $outLen = 32 )
591 591
     {
592
-        return ParagonIE_Sodium_Compat::crypto_generichash_init($key, $outLen);
592
+        return ParagonIE_Sodium_Compat::crypto_generichash_init( $key, $outLen );
593 593
     }
594 594
 }
595
-if (!is_callable('sodium_crypto_generichash_keygen')) {
595
+if ( ! is_callable( 'sodium_crypto_generichash_keygen' ) ) {
596 596
     /**
597 597
      * @see ParagonIE_Sodium_Compat::crypto_generichash_keygen()
598 598
      * @return string
@@ -603,7 +603,7 @@  discard block
 block discarded – undo
603 603
         return ParagonIE_Sodium_Compat::crypto_generichash_keygen();
604 604
     }
605 605
 }
606
-if (!is_callable('sodium_crypto_generichash_update')) {
606
+if ( ! is_callable( 'sodium_crypto_generichash_update' ) ) {
607 607
     /**
608 608
      * @see ParagonIE_Sodium_Compat::crypto_generichash_update()
609 609
      * @param string|null $ctx
@@ -612,12 +612,12 @@  discard block
 block discarded – undo
612 612
      * @throws SodiumException
613 613
      * @throws TypeError
614 614
      */
615
-    function sodium_crypto_generichash_update(&$ctx, $message = '')
615
+    function sodium_crypto_generichash_update( &$ctx, $message = '' )
616 616
     {
617
-        ParagonIE_Sodium_Compat::crypto_generichash_update($ctx, $message);
617
+        ParagonIE_Sodium_Compat::crypto_generichash_update( $ctx, $message );
618 618
     }
619 619
 }
620
-if (!is_callable('sodium_crypto_kdf_keygen')) {
620
+if ( ! is_callable( 'sodium_crypto_kdf_keygen' ) ) {
621 621
     /**
622 622
      * @see ParagonIE_Sodium_Compat::crypto_kdf_keygen()
623 623
      * @return string
@@ -628,7 +628,7 @@  discard block
 block discarded – undo
628 628
         return ParagonIE_Sodium_Compat::crypto_kdf_keygen();
629 629
     }
630 630
 }
631
-if (!is_callable('sodium_crypto_kdf_derive_from_key')) {
631
+if ( ! is_callable( 'sodium_crypto_kdf_derive_from_key' ) ) {
632 632
     /**
633 633
      * @see ParagonIE_Sodium_Compat::crypto_kdf_derive_from_key()
634 634
      * @param int $subkey_len
@@ -638,7 +638,7 @@  discard block
 block discarded – undo
638 638
      * @return string
639 639
      * @throws Exception
640 640
      */
641
-    function sodium_crypto_kdf_derive_from_key($subkey_len, $subkey_id, $context, $key)
641
+    function sodium_crypto_kdf_derive_from_key( $subkey_len, $subkey_id, $context, $key )
642 642
     {
643 643
         return ParagonIE_Sodium_Compat::crypto_kdf_derive_from_key(
644 644
             $subkey_len,
@@ -648,7 +648,7 @@  discard block
 block discarded – undo
648 648
         );
649 649
     }
650 650
 }
651
-if (!is_callable('sodium_crypto_kx')) {
651
+if ( ! is_callable( 'sodium_crypto_kx' ) ) {
652 652
     /**
653 653
      * @see ParagonIE_Sodium_Compat::crypto_kx()
654 654
      * @param string $my_secret
@@ -659,7 +659,7 @@  discard block
 block discarded – undo
659 659
      * @throws SodiumException
660 660
      * @throws TypeError
661 661
      */
662
-    function sodium_crypto_kx($my_secret, $their_public, $client_public, $server_public)
662
+    function sodium_crypto_kx( $my_secret, $their_public, $client_public, $server_public )
663 663
     {
664 664
         return ParagonIE_Sodium_Compat::crypto_kx(
665 665
             $my_secret,
@@ -669,18 +669,18 @@  discard block
 block discarded – undo
669 669
         );
670 670
     }
671 671
 }
672
-if (!is_callable('sodium_crypto_kx_seed_keypair')) {
672
+if ( ! is_callable( 'sodium_crypto_kx_seed_keypair' ) ) {
673 673
     /**
674 674
      * @param string $seed
675 675
      * @return string
676 676
      * @throws Exception
677 677
      */
678
-    function sodium_crypto_kx_seed_keypair($seed)
678
+    function sodium_crypto_kx_seed_keypair( $seed )
679 679
     {
680
-        return ParagonIE_Sodium_Compat::crypto_kx_seed_keypair($seed);
680
+        return ParagonIE_Sodium_Compat::crypto_kx_seed_keypair( $seed );
681 681
     }
682 682
 }
683
-if (!is_callable('sodium_crypto_kx_keypair')) {
683
+if ( ! is_callable( 'sodium_crypto_kx_keypair' ) ) {
684 684
     /**
685 685
      * @return string
686 686
      * @throws Exception
@@ -690,53 +690,53 @@  discard block
 block discarded – undo
690 690
         return ParagonIE_Sodium_Compat::crypto_kx_keypair();
691 691
     }
692 692
 }
693
-if (!is_callable('sodium_crypto_kx_client_session_keys')) {
693
+if ( ! is_callable( 'sodium_crypto_kx_client_session_keys' ) ) {
694 694
     /**
695 695
      * @param string $keypair
696 696
      * @param string $serverPublicKey
697 697
      * @return array{0: string, 1: string}
698 698
      * @throws SodiumException
699 699
      */
700
-    function sodium_crypto_kx_client_session_keys($keypair, $serverPublicKey)
700
+    function sodium_crypto_kx_client_session_keys( $keypair, $serverPublicKey )
701 701
     {
702
-        return ParagonIE_Sodium_Compat::crypto_kx_client_session_keys($keypair, $serverPublicKey);
702
+        return ParagonIE_Sodium_Compat::crypto_kx_client_session_keys( $keypair, $serverPublicKey );
703 703
     }
704 704
 }
705
-if (!is_callable('sodium_crypto_kx_server_session_keys')) {
705
+if ( ! is_callable( 'sodium_crypto_kx_server_session_keys' ) ) {
706 706
     /**
707 707
      * @param string $keypair
708 708
      * @param string $clientPublicKey
709 709
      * @return array{0: string, 1: string}
710 710
      * @throws SodiumException
711 711
      */
712
-    function sodium_crypto_kx_server_session_keys($keypair, $clientPublicKey)
712
+    function sodium_crypto_kx_server_session_keys( $keypair, $clientPublicKey )
713 713
     {
714
-        return ParagonIE_Sodium_Compat::crypto_kx_server_session_keys($keypair, $clientPublicKey);
714
+        return ParagonIE_Sodium_Compat::crypto_kx_server_session_keys( $keypair, $clientPublicKey );
715 715
     }
716 716
 }
717
-if (!is_callable('sodium_crypto_kx_secretkey')) {
717
+if ( ! is_callable( 'sodium_crypto_kx_secretkey' ) ) {
718 718
     /**
719 719
      * @param string $keypair
720 720
      * @return string
721 721
      * @throws Exception
722 722
      */
723
-    function sodium_crypto_kx_secretkey($keypair)
723
+    function sodium_crypto_kx_secretkey( $keypair )
724 724
     {
725
-        return ParagonIE_Sodium_Compat::crypto_kx_secretkey($keypair);
725
+        return ParagonIE_Sodium_Compat::crypto_kx_secretkey( $keypair );
726 726
     }
727 727
 }
728
-if (!is_callable('sodium_crypto_kx_publickey')) {
728
+if ( ! is_callable( 'sodium_crypto_kx_publickey' ) ) {
729 729
     /**
730 730
      * @param string $keypair
731 731
      * @return string
732 732
      * @throws Exception
733 733
      */
734
-    function sodium_crypto_kx_publickey($keypair)
734
+    function sodium_crypto_kx_publickey( $keypair )
735 735
     {
736
-        return ParagonIE_Sodium_Compat::crypto_kx_publickey($keypair);
736
+        return ParagonIE_Sodium_Compat::crypto_kx_publickey( $keypair );
737 737
     }
738 738
 }
739
-if (!is_callable('sodium_crypto_pwhash')) {
739
+if ( ! is_callable( 'sodium_crypto_pwhash' ) ) {
740 740
     /**
741 741
      * @see ParagonIE_Sodium_Compat::crypto_pwhash()
742 742
      * @param int $outlen
@@ -749,12 +749,12 @@  discard block
 block discarded – undo
749 749
      * @throws SodiumException
750 750
      * @throws TypeError
751 751
      */
752
-    function sodium_crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit, $algo = null)
752
+    function sodium_crypto_pwhash( $outlen, $passwd, $salt, $opslimit, $memlimit, $algo = null )
753 753
     {
754
-        return ParagonIE_Sodium_Compat::crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit, $algo);
754
+        return ParagonIE_Sodium_Compat::crypto_pwhash( $outlen, $passwd, $salt, $opslimit, $memlimit, $algo );
755 755
     }
756 756
 }
757
-if (!is_callable('sodium_crypto_pwhash_str')) {
757
+if ( ! is_callable( 'sodium_crypto_pwhash_str' ) ) {
758 758
     /**
759 759
      * @see ParagonIE_Sodium_Compat::crypto_pwhash_str()
760 760
      * @param string $passwd
@@ -764,12 +764,12 @@  discard block
 block discarded – undo
764 764
      * @throws SodiumException
765 765
      * @throws TypeError
766 766
      */
767
-    function sodium_crypto_pwhash_str($passwd, $opslimit, $memlimit)
767
+    function sodium_crypto_pwhash_str( $passwd, $opslimit, $memlimit )
768 768
     {
769
-        return ParagonIE_Sodium_Compat::crypto_pwhash_str($passwd, $opslimit, $memlimit);
769
+        return ParagonIE_Sodium_Compat::crypto_pwhash_str( $passwd, $opslimit, $memlimit );
770 770
     }
771 771
 }
772
-if (!is_callable('sodium_crypto_pwhash_str_needs_rehash')) {
772
+if ( ! is_callable( 'sodium_crypto_pwhash_str_needs_rehash' ) ) {
773 773
     /**
774 774
      * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_needs_rehash()
775 775
      * @param string $hash
@@ -779,12 +779,12 @@  discard block
 block discarded – undo
779 779
      *
780 780
      * @throws SodiumException
781 781
      */
782
-    function sodium_crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit)
782
+    function sodium_crypto_pwhash_str_needs_rehash( $hash, $opslimit, $memlimit )
783 783
     {
784
-        return ParagonIE_Sodium_Compat::crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit);
784
+        return ParagonIE_Sodium_Compat::crypto_pwhash_str_needs_rehash( $hash, $opslimit, $memlimit );
785 785
     }
786 786
 }
787
-if (!is_callable('sodium_crypto_pwhash_str_verify')) {
787
+if ( ! is_callable( 'sodium_crypto_pwhash_str_verify' ) ) {
788 788
     /**
789 789
      * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_verify()
790 790
      * @param string $passwd
@@ -793,12 +793,12 @@  discard block
 block discarded – undo
793 793
      * @throws SodiumException
794 794
      * @throws TypeError
795 795
      */
796
-    function sodium_crypto_pwhash_str_verify($passwd, $hash)
796
+    function sodium_crypto_pwhash_str_verify( $passwd, $hash )
797 797
     {
798
-        return ParagonIE_Sodium_Compat::crypto_pwhash_str_verify($passwd, $hash);
798
+        return ParagonIE_Sodium_Compat::crypto_pwhash_str_verify( $passwd, $hash );
799 799
     }
800 800
 }
801
-if (!is_callable('sodium_crypto_pwhash_scryptsalsa208sha256')) {
801
+if ( ! is_callable( 'sodium_crypto_pwhash_scryptsalsa208sha256' ) ) {
802 802
     /**
803 803
      * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256()
804 804
      * @param int $outlen
@@ -810,12 +810,12 @@  discard block
 block discarded – undo
810 810
      * @throws SodiumException
811 811
      * @throws TypeError
812 812
      */
813
-    function sodium_crypto_pwhash_scryptsalsa208sha256($outlen, $passwd, $salt, $opslimit, $memlimit)
813
+    function sodium_crypto_pwhash_scryptsalsa208sha256( $outlen, $passwd, $salt, $opslimit, $memlimit )
814 814
     {
815
-        return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256($outlen, $passwd, $salt, $opslimit, $memlimit);
815
+        return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256( $outlen, $passwd, $salt, $opslimit, $memlimit );
816 816
     }
817 817
 }
818
-if (!is_callable('sodium_crypto_pwhash_scryptsalsa208sha256_str')) {
818
+if ( ! is_callable( 'sodium_crypto_pwhash_scryptsalsa208sha256_str' ) ) {
819 819
     /**
820 820
      * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str()
821 821
      * @param string $passwd
@@ -825,12 +825,12 @@  discard block
 block discarded – undo
825 825
      * @throws SodiumException
826 826
      * @throws TypeError
827 827
      */
828
-    function sodium_crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit)
828
+    function sodium_crypto_pwhash_scryptsalsa208sha256_str( $passwd, $opslimit, $memlimit )
829 829
     {
830
-        return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit);
830
+        return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str( $passwd, $opslimit, $memlimit );
831 831
     }
832 832
 }
833
-if (!is_callable('sodium_crypto_pwhash_scryptsalsa208sha256_str_verify')) {
833
+if ( ! is_callable( 'sodium_crypto_pwhash_scryptsalsa208sha256_str_verify' ) ) {
834 834
     /**
835 835
      * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify()
836 836
      * @param string $passwd
@@ -839,12 +839,12 @@  discard block
 block discarded – undo
839 839
      * @throws SodiumException
840 840
      * @throws TypeError
841 841
      */
842
-    function sodium_crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash)
842
+    function sodium_crypto_pwhash_scryptsalsa208sha256_str_verify( $passwd, $hash )
843 843
     {
844
-        return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash);
844
+        return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify( $passwd, $hash );
845 845
     }
846 846
 }
847
-if (!is_callable('sodium_crypto_scalarmult')) {
847
+if ( ! is_callable( 'sodium_crypto_scalarmult' ) ) {
848 848
     /**
849 849
      * @see ParagonIE_Sodium_Compat::crypto_scalarmult()
850 850
      * @param string $n
@@ -853,12 +853,12 @@  discard block
 block discarded – undo
853 853
      * @throws SodiumException
854 854
      * @throws TypeError
855 855
      */
856
-    function sodium_crypto_scalarmult($n, $p)
856
+    function sodium_crypto_scalarmult( $n, $p )
857 857
     {
858
-        return ParagonIE_Sodium_Compat::crypto_scalarmult($n, $p);
858
+        return ParagonIE_Sodium_Compat::crypto_scalarmult( $n, $p );
859 859
     }
860 860
 }
861
-if (!is_callable('sodium_crypto_scalarmult_base')) {
861
+if ( ! is_callable( 'sodium_crypto_scalarmult_base' ) ) {
862 862
     /**
863 863
      * @see ParagonIE_Sodium_Compat::crypto_scalarmult_base()
864 864
      * @param string $n
@@ -866,12 +866,12 @@  discard block
 block discarded – undo
866 866
      * @throws SodiumException
867 867
      * @throws TypeError
868 868
      */
869
-    function sodium_crypto_scalarmult_base($n)
869
+    function sodium_crypto_scalarmult_base( $n )
870 870
     {
871
-        return ParagonIE_Sodium_Compat::crypto_scalarmult_base($n);
871
+        return ParagonIE_Sodium_Compat::crypto_scalarmult_base( $n );
872 872
     }
873 873
 }
874
-if (!is_callable('sodium_crypto_secretbox')) {
874
+if ( ! is_callable( 'sodium_crypto_secretbox' ) ) {
875 875
     /**
876 876
      * @see ParagonIE_Sodium_Compat::crypto_secretbox()
877 877
      * @param string $message
@@ -881,12 +881,12 @@  discard block
 block discarded – undo
881 881
      * @throws SodiumException
882 882
      * @throws TypeError
883 883
      */
884
-    function sodium_crypto_secretbox($message, $nonce, $key)
884
+    function sodium_crypto_secretbox( $message, $nonce, $key )
885 885
     {
886
-        return ParagonIE_Sodium_Compat::crypto_secretbox($message, $nonce, $key);
886
+        return ParagonIE_Sodium_Compat::crypto_secretbox( $message, $nonce, $key );
887 887
     }
888 888
 }
889
-if (!is_callable('sodium_crypto_secretbox_keygen')) {
889
+if ( ! is_callable( 'sodium_crypto_secretbox_keygen' ) ) {
890 890
     /**
891 891
      * @see ParagonIE_Sodium_Compat::crypto_secretbox_keygen()
892 892
      * @return string
@@ -897,7 +897,7 @@  discard block
 block discarded – undo
897 897
         return ParagonIE_Sodium_Compat::crypto_secretbox_keygen();
898 898
     }
899 899
 }
900
-if (!is_callable('sodium_crypto_secretbox_open')) {
900
+if ( ! is_callable( 'sodium_crypto_secretbox_open' ) ) {
901 901
     /**
902 902
      * @see ParagonIE_Sodium_Compat::crypto_secretbox_open()
903 903
      * @param string $message
@@ -905,29 +905,29 @@  discard block
 block discarded – undo
905 905
      * @param string $key
906 906
      * @return string|bool
907 907
      */
908
-    function sodium_crypto_secretbox_open($message, $nonce, $key)
908
+    function sodium_crypto_secretbox_open( $message, $nonce, $key )
909 909
     {
910 910
         try {
911
-            return ParagonIE_Sodium_Compat::crypto_secretbox_open($message, $nonce, $key);
912
-        } catch (Error $ex) {
911
+            return ParagonIE_Sodium_Compat::crypto_secretbox_open( $message, $nonce, $key );
912
+        } catch ( Error $ex ) {
913 913
             return false;
914
-        } catch (Exception $ex) {
914
+        } catch ( Exception $ex ) {
915 915
             return false;
916 916
         }
917 917
     }
918 918
 }
919
-if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_init_push')) {
919
+if ( ! is_callable( 'sodium_crypto_secretstream_xchacha20poly1305_init_push' ) ) {
920 920
     /**
921 921
      * @param string $key
922 922
      * @return array<int, string>
923 923
      * @throws SodiumException
924 924
      */
925
-    function sodium_crypto_secretstream_xchacha20poly1305_init_push($key)
925
+    function sodium_crypto_secretstream_xchacha20poly1305_init_push( $key )
926 926
     {
927
-        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_push($key);
927
+        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_push( $key );
928 928
     }
929 929
 }
930
-if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_push')) {
930
+if ( ! is_callable( 'sodium_crypto_secretstream_xchacha20poly1305_push' ) ) {
931 931
     /**
932 932
      * @param string $state
933 933
      * @param string $msg
@@ -936,24 +936,24 @@  discard block
 block discarded – undo
936 936
      * @return string
937 937
      * @throws SodiumException
938 938
      */
939
-    function sodium_crypto_secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0)
939
+    function sodium_crypto_secretstream_xchacha20poly1305_push( &$state, $msg, $aad = '', $tag = 0 )
940 940
     {
941
-        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_push($state, $msg, $aad, $tag);
941
+        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_push( $state, $msg, $aad, $tag );
942 942
     }
943 943
 }
944
-if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_init_pull')) {
944
+if ( ! is_callable( 'sodium_crypto_secretstream_xchacha20poly1305_init_pull' ) ) {
945 945
     /**
946 946
      * @param string $header
947 947
      * @param string $key
948 948
      * @return string
949 949
      * @throws Exception
950 950
      */
951
-    function sodium_crypto_secretstream_xchacha20poly1305_init_pull($header, $key)
951
+    function sodium_crypto_secretstream_xchacha20poly1305_init_pull( $header, $key )
952 952
     {
953
-        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_pull($header, $key);
953
+        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_pull( $header, $key );
954 954
     }
955 955
 }
956
-if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_pull')) {
956
+if ( ! is_callable( 'sodium_crypto_secretstream_xchacha20poly1305_pull' ) ) {
957 957
     /**
958 958
      * @param string $state
959 959
      * @param string $cipher
@@ -961,23 +961,23 @@  discard block
 block discarded – undo
961 961
      * @return bool|array{0: string, 1: int}
962 962
      * @throws SodiumException
963 963
      */
964
-    function sodium_crypto_secretstream_xchacha20poly1305_pull(&$state, $cipher, $aad = '')
964
+    function sodium_crypto_secretstream_xchacha20poly1305_pull( &$state, $cipher, $aad = '' )
965 965
     {
966
-        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_pull($state, $cipher, $aad);
966
+        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_pull( $state, $cipher, $aad );
967 967
     }
968 968
 }
969
-if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_rekey')) {
969
+if ( ! is_callable( 'sodium_crypto_secretstream_xchacha20poly1305_rekey' ) ) {
970 970
     /**
971 971
      * @param string $state
972 972
      * @return void
973 973
      * @throws SodiumException
974 974
      */
975
-    function sodium_crypto_secretstream_xchacha20poly1305_rekey(&$state)
975
+    function sodium_crypto_secretstream_xchacha20poly1305_rekey( &$state )
976 976
     {
977
-        ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_rekey($state);
977
+        ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_rekey( $state );
978 978
     }
979 979
 }
980
-if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_keygen')) {
980
+if ( ! is_callable( 'sodium_crypto_secretstream_xchacha20poly1305_keygen' ) ) {
981 981
     /**
982 982
      * @return string
983 983
      * @throws Exception
@@ -987,7 +987,7 @@  discard block
 block discarded – undo
987 987
         return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_keygen();
988 988
     }
989 989
 }
990
-if (!is_callable('sodium_crypto_shorthash')) {
990
+if ( ! is_callable( 'sodium_crypto_shorthash' ) ) {
991 991
     /**
992 992
      * @see ParagonIE_Sodium_Compat::crypto_shorthash()
993 993
      * @param string $message
@@ -996,12 +996,12 @@  discard block
 block discarded – undo
996 996
      * @throws SodiumException
997 997
      * @throws TypeError
998 998
      */
999
-    function sodium_crypto_shorthash($message, $key = '')
999
+    function sodium_crypto_shorthash( $message, $key = '' )
1000 1000
     {
1001
-        return ParagonIE_Sodium_Compat::crypto_shorthash($message, $key);
1001
+        return ParagonIE_Sodium_Compat::crypto_shorthash( $message, $key );
1002 1002
     }
1003 1003
 }
1004
-if (!is_callable('sodium_crypto_shorthash_keygen')) {
1004
+if ( ! is_callable( 'sodium_crypto_shorthash_keygen' ) ) {
1005 1005
     /**
1006 1006
      * @see ParagonIE_Sodium_Compat::crypto_shorthash_keygen()
1007 1007
      * @return string
@@ -1012,7 +1012,7 @@  discard block
 block discarded – undo
1012 1012
         return ParagonIE_Sodium_Compat::crypto_shorthash_keygen();
1013 1013
     }
1014 1014
 }
1015
-if (!is_callable('sodium_crypto_sign')) {
1015
+if ( ! is_callable( 'sodium_crypto_sign' ) ) {
1016 1016
     /**
1017 1017
      * @see ParagonIE_Sodium_Compat::crypto_sign()
1018 1018
      * @param string $message
@@ -1021,12 +1021,12 @@  discard block
 block discarded – undo
1021 1021
      * @throws SodiumException
1022 1022
      * @throws TypeError
1023 1023
      */
1024
-    function sodium_crypto_sign($message, $sk)
1024
+    function sodium_crypto_sign( $message, $sk )
1025 1025
     {
1026
-        return ParagonIE_Sodium_Compat::crypto_sign($message, $sk);
1026
+        return ParagonIE_Sodium_Compat::crypto_sign( $message, $sk );
1027 1027
     }
1028 1028
 }
1029
-if (!is_callable('sodium_crypto_sign_detached')) {
1029
+if ( ! is_callable( 'sodium_crypto_sign_detached' ) ) {
1030 1030
     /**
1031 1031
      * @see ParagonIE_Sodium_Compat::crypto_sign_detached()
1032 1032
      * @param string $message
@@ -1035,12 +1035,12 @@  discard block
 block discarded – undo
1035 1035
      * @throws SodiumException
1036 1036
      * @throws TypeError
1037 1037
      */
1038
-    function sodium_crypto_sign_detached($message, $sk)
1038
+    function sodium_crypto_sign_detached( $message, $sk )
1039 1039
     {
1040
-        return ParagonIE_Sodium_Compat::crypto_sign_detached($message, $sk);
1040
+        return ParagonIE_Sodium_Compat::crypto_sign_detached( $message, $sk );
1041 1041
     }
1042 1042
 }
1043
-if (!is_callable('sodium_crypto_sign_keypair_from_secretkey_and_publickey')) {
1043
+if ( ! is_callable( 'sodium_crypto_sign_keypair_from_secretkey_and_publickey' ) ) {
1044 1044
     /**
1045 1045
      * @see ParagonIE_Sodium_Compat::crypto_sign_keypair_from_secretkey_and_publickey()
1046 1046
      * @param string $sk
@@ -1049,12 +1049,12 @@  discard block
 block discarded – undo
1049 1049
      * @throws SodiumException
1050 1050
      * @throws TypeError
1051 1051
      */
1052
-    function sodium_crypto_sign_keypair_from_secretkey_and_publickey($sk, $pk)
1052
+    function sodium_crypto_sign_keypair_from_secretkey_and_publickey( $sk, $pk )
1053 1053
     {
1054
-        return ParagonIE_Sodium_Compat::crypto_sign_keypair_from_secretkey_and_publickey($sk, $pk);
1054
+        return ParagonIE_Sodium_Compat::crypto_sign_keypair_from_secretkey_and_publickey( $sk, $pk );
1055 1055
     }
1056 1056
 }
1057
-if (!is_callable('sodium_crypto_sign_keypair')) {
1057
+if ( ! is_callable( 'sodium_crypto_sign_keypair' ) ) {
1058 1058
     /**
1059 1059
      * @see ParagonIE_Sodium_Compat::crypto_sign_keypair()
1060 1060
      * @return string
@@ -1066,25 +1066,25 @@  discard block
 block discarded – undo
1066 1066
         return ParagonIE_Sodium_Compat::crypto_sign_keypair();
1067 1067
     }
1068 1068
 }
1069
-if (!is_callable('sodium_crypto_sign_open')) {
1069
+if ( ! is_callable( 'sodium_crypto_sign_open' ) ) {
1070 1070
     /**
1071 1071
      * @see ParagonIE_Sodium_Compat::crypto_sign_open()
1072 1072
      * @param string $signedMessage
1073 1073
      * @param string $pk
1074 1074
      * @return string|bool
1075 1075
      */
1076
-    function sodium_crypto_sign_open($signedMessage, $pk)
1076
+    function sodium_crypto_sign_open( $signedMessage, $pk )
1077 1077
     {
1078 1078
         try {
1079
-            return ParagonIE_Sodium_Compat::crypto_sign_open($signedMessage, $pk);
1080
-        } catch (Error $ex) {
1079
+            return ParagonIE_Sodium_Compat::crypto_sign_open( $signedMessage, $pk );
1080
+        } catch ( Error $ex ) {
1081 1081
             return false;
1082
-        } catch (Exception $ex) {
1082
+        } catch ( Exception $ex ) {
1083 1083
             return false;
1084 1084
         }
1085 1085
     }
1086 1086
 }
1087
-if (!is_callable('sodium_crypto_sign_publickey')) {
1087
+if ( ! is_callable( 'sodium_crypto_sign_publickey' ) ) {
1088 1088
     /**
1089 1089
      * @see ParagonIE_Sodium_Compat::crypto_sign_publickey()
1090 1090
      * @param string $keypair
@@ -1092,12 +1092,12 @@  discard block
 block discarded – undo
1092 1092
      * @throws SodiumException
1093 1093
      * @throws TypeError
1094 1094
      */
1095
-    function sodium_crypto_sign_publickey($keypair)
1095
+    function sodium_crypto_sign_publickey( $keypair )
1096 1096
     {
1097
-        return ParagonIE_Sodium_Compat::crypto_sign_publickey($keypair);
1097
+        return ParagonIE_Sodium_Compat::crypto_sign_publickey( $keypair );
1098 1098
     }
1099 1099
 }
1100
-if (!is_callable('sodium_crypto_sign_publickey_from_secretkey')) {
1100
+if ( ! is_callable( 'sodium_crypto_sign_publickey_from_secretkey' ) ) {
1101 1101
     /**
1102 1102
      * @see ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey()
1103 1103
      * @param string $sk
@@ -1105,12 +1105,12 @@  discard block
 block discarded – undo
1105 1105
      * @throws SodiumException
1106 1106
      * @throws TypeError
1107 1107
      */
1108
-    function sodium_crypto_sign_publickey_from_secretkey($sk)
1108
+    function sodium_crypto_sign_publickey_from_secretkey( $sk )
1109 1109
     {
1110
-        return ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey($sk);
1110
+        return ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey( $sk );
1111 1111
     }
1112 1112
 }
1113
-if (!is_callable('sodium_crypto_sign_secretkey')) {
1113
+if ( ! is_callable( 'sodium_crypto_sign_secretkey' ) ) {
1114 1114
     /**
1115 1115
      * @see ParagonIE_Sodium_Compat::crypto_sign_secretkey()
1116 1116
      * @param string $keypair
@@ -1118,12 +1118,12 @@  discard block
 block discarded – undo
1118 1118
      * @throws SodiumException
1119 1119
      * @throws TypeError
1120 1120
      */
1121
-    function sodium_crypto_sign_secretkey($keypair)
1121
+    function sodium_crypto_sign_secretkey( $keypair )
1122 1122
     {
1123
-        return ParagonIE_Sodium_Compat::crypto_sign_secretkey($keypair);
1123
+        return ParagonIE_Sodium_Compat::crypto_sign_secretkey( $keypair );
1124 1124
     }
1125 1125
 }
1126
-if (!is_callable('sodium_crypto_sign_seed_keypair')) {
1126
+if ( ! is_callable( 'sodium_crypto_sign_seed_keypair' ) ) {
1127 1127
     /**
1128 1128
      * @see ParagonIE_Sodium_Compat::crypto_sign_seed_keypair()
1129 1129
      * @param string $seed
@@ -1131,12 +1131,12 @@  discard block
 block discarded – undo
1131 1131
      * @throws SodiumException
1132 1132
      * @throws TypeError
1133 1133
      */
1134
-    function sodium_crypto_sign_seed_keypair($seed)
1134
+    function sodium_crypto_sign_seed_keypair( $seed )
1135 1135
     {
1136
-        return ParagonIE_Sodium_Compat::crypto_sign_seed_keypair($seed);
1136
+        return ParagonIE_Sodium_Compat::crypto_sign_seed_keypair( $seed );
1137 1137
     }
1138 1138
 }
1139
-if (!is_callable('sodium_crypto_sign_verify_detached')) {
1139
+if ( ! is_callable( 'sodium_crypto_sign_verify_detached' ) ) {
1140 1140
     /**
1141 1141
      * @see ParagonIE_Sodium_Compat::crypto_sign_verify_detached()
1142 1142
      * @param string $signature
@@ -1146,12 +1146,12 @@  discard block
 block discarded – undo
1146 1146
      * @throws SodiumException
1147 1147
      * @throws TypeError
1148 1148
      */
1149
-    function sodium_crypto_sign_verify_detached($signature, $message, $pk)
1149
+    function sodium_crypto_sign_verify_detached( $signature, $message, $pk )
1150 1150
     {
1151
-        return ParagonIE_Sodium_Compat::crypto_sign_verify_detached($signature, $message, $pk);
1151
+        return ParagonIE_Sodium_Compat::crypto_sign_verify_detached( $signature, $message, $pk );
1152 1152
     }
1153 1153
 }
1154
-if (!is_callable('sodium_crypto_sign_ed25519_pk_to_curve25519')) {
1154
+if ( ! is_callable( 'sodium_crypto_sign_ed25519_pk_to_curve25519' ) ) {
1155 1155
     /**
1156 1156
      * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519()
1157 1157
      * @param string $pk
@@ -1159,12 +1159,12 @@  discard block
 block discarded – undo
1159 1159
      * @throws SodiumException
1160 1160
      * @throws TypeError
1161 1161
      */
1162
-    function sodium_crypto_sign_ed25519_pk_to_curve25519($pk)
1162
+    function sodium_crypto_sign_ed25519_pk_to_curve25519( $pk )
1163 1163
     {
1164
-        return ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519($pk);
1164
+        return ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519( $pk );
1165 1165
     }
1166 1166
 }
1167
-if (!is_callable('sodium_crypto_sign_ed25519_sk_to_curve25519')) {
1167
+if ( ! is_callable( 'sodium_crypto_sign_ed25519_sk_to_curve25519' ) ) {
1168 1168
     /**
1169 1169
      * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519()
1170 1170
      * @param string $sk
@@ -1172,12 +1172,12 @@  discard block
 block discarded – undo
1172 1172
      * @throws SodiumException
1173 1173
      * @throws TypeError
1174 1174
      */
1175
-    function sodium_crypto_sign_ed25519_sk_to_curve25519($sk)
1175
+    function sodium_crypto_sign_ed25519_sk_to_curve25519( $sk )
1176 1176
     {
1177
-        return ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519($sk);
1177
+        return ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519( $sk );
1178 1178
     }
1179 1179
 }
1180
-if (!is_callable('sodium_crypto_stream')) {
1180
+if ( ! is_callable( 'sodium_crypto_stream' ) ) {
1181 1181
     /**
1182 1182
      * @see ParagonIE_Sodium_Compat::crypto_stream()
1183 1183
      * @param int $len
@@ -1187,12 +1187,12 @@  discard block
 block discarded – undo
1187 1187
      * @throws SodiumException
1188 1188
      * @throws TypeError
1189 1189
      */
1190
-    function sodium_crypto_stream($len, $nonce, $key)
1190
+    function sodium_crypto_stream( $len, $nonce, $key )
1191 1191
     {
1192
-        return ParagonIE_Sodium_Compat::crypto_stream($len, $nonce, $key);
1192
+        return ParagonIE_Sodium_Compat::crypto_stream( $len, $nonce, $key );
1193 1193
     }
1194 1194
 }
1195
-if (!is_callable('sodium_crypto_stream_keygen')) {
1195
+if ( ! is_callable( 'sodium_crypto_stream_keygen' ) ) {
1196 1196
     /**
1197 1197
      * @see ParagonIE_Sodium_Compat::crypto_stream_keygen()
1198 1198
      * @return string
@@ -1203,7 +1203,7 @@  discard block
 block discarded – undo
1203 1203
         return ParagonIE_Sodium_Compat::crypto_stream_keygen();
1204 1204
     }
1205 1205
 }
1206
-if (!is_callable('sodium_crypto_stream_xor')) {
1206
+if ( ! is_callable( 'sodium_crypto_stream_xor' ) ) {
1207 1207
     /**
1208 1208
      * @see ParagonIE_Sodium_Compat::crypto_stream_xor()
1209 1209
      * @param string $message
@@ -1213,13 +1213,13 @@  discard block
 block discarded – undo
1213 1213
      * @throws SodiumException
1214 1214
      * @throws TypeError
1215 1215
      */
1216
-    function sodium_crypto_stream_xor($message, $nonce, $key)
1216
+    function sodium_crypto_stream_xor( $message, $nonce, $key )
1217 1217
     {
1218
-        return ParagonIE_Sodium_Compat::crypto_stream_xor($message, $nonce, $key);
1218
+        return ParagonIE_Sodium_Compat::crypto_stream_xor( $message, $nonce, $key );
1219 1219
     }
1220 1220
 }
1221
-require_once dirname(__FILE__) . '/stream-xchacha20.php';
1222
-if (!is_callable('sodium_hex2bin')) {
1221
+require_once dirname( __FILE__ ) . '/stream-xchacha20.php';
1222
+if ( ! is_callable( 'sodium_hex2bin' ) ) {
1223 1223
     /**
1224 1224
      * @see ParagonIE_Sodium_Compat::hex2bin()
1225 1225
      * @param string $string
@@ -1227,12 +1227,12 @@  discard block
 block discarded – undo
1227 1227
      * @throws SodiumException
1228 1228
      * @throws TypeError
1229 1229
      */
1230
-    function sodium_hex2bin($string)
1230
+    function sodium_hex2bin( $string )
1231 1231
     {
1232
-        return ParagonIE_Sodium_Compat::hex2bin($string);
1232
+        return ParagonIE_Sodium_Compat::hex2bin( $string );
1233 1233
     }
1234 1234
 }
1235
-if (!is_callable('sodium_increment')) {
1235
+if ( ! is_callable( 'sodium_increment' ) ) {
1236 1236
     /**
1237 1237
      * @see ParagonIE_Sodium_Compat::increment()
1238 1238
      * @param string $string
@@ -1240,12 +1240,12 @@  discard block
 block discarded – undo
1240 1240
      * @throws SodiumException
1241 1241
      * @throws TypeError
1242 1242
      */
1243
-    function sodium_increment(&$string)
1243
+    function sodium_increment( &$string )
1244 1244
     {
1245
-        ParagonIE_Sodium_Compat::increment($string);
1245
+        ParagonIE_Sodium_Compat::increment( $string );
1246 1246
     }
1247 1247
 }
1248
-if (!is_callable('sodium_library_version_major')) {
1248
+if ( ! is_callable( 'sodium_library_version_major' ) ) {
1249 1249
     /**
1250 1250
      * @see ParagonIE_Sodium_Compat::library_version_major()
1251 1251
      * @return int
@@ -1255,7 +1255,7 @@  discard block
 block discarded – undo
1255 1255
         return ParagonIE_Sodium_Compat::library_version_major();
1256 1256
     }
1257 1257
 }
1258
-if (!is_callable('sodium_library_version_minor')) {
1258
+if ( ! is_callable( 'sodium_library_version_minor' ) ) {
1259 1259
     /**
1260 1260
      * @see ParagonIE_Sodium_Compat::library_version_minor()
1261 1261
      * @return int
@@ -1265,7 +1265,7 @@  discard block
 block discarded – undo
1265 1265
         return ParagonIE_Sodium_Compat::library_version_minor();
1266 1266
     }
1267 1267
 }
1268
-if (!is_callable('sodium_version_string')) {
1268
+if ( ! is_callable( 'sodium_version_string' ) ) {
1269 1269
     /**
1270 1270
      * @see ParagonIE_Sodium_Compat::version_string()
1271 1271
      * @return string
@@ -1275,7 +1275,7 @@  discard block
 block discarded – undo
1275 1275
         return ParagonIE_Sodium_Compat::version_string();
1276 1276
     }
1277 1277
 }
1278
-if (!is_callable('sodium_memcmp')) {
1278
+if ( ! is_callable( 'sodium_memcmp' ) ) {
1279 1279
     /**
1280 1280
      * @see ParagonIE_Sodium_Compat::memcmp()
1281 1281
      * @param string $a
@@ -1284,12 +1284,12 @@  discard block
 block discarded – undo
1284 1284
      * @throws SodiumException
1285 1285
      * @throws TypeError
1286 1286
      */
1287
-    function sodium_memcmp($a, $b)
1287
+    function sodium_memcmp( $a, $b )
1288 1288
     {
1289
-        return ParagonIE_Sodium_Compat::memcmp($a, $b);
1289
+        return ParagonIE_Sodium_Compat::memcmp( $a, $b );
1290 1290
     }
1291 1291
 }
1292
-if (!is_callable('sodium_memzero')) {
1292
+if ( ! is_callable( 'sodium_memzero' ) ) {
1293 1293
     /**
1294 1294
      * @see ParagonIE_Sodium_Compat::memzero()
1295 1295
      * @param string $str
@@ -1297,12 +1297,12 @@  discard block
 block discarded – undo
1297 1297
      * @throws SodiumException
1298 1298
      * @throws TypeError
1299 1299
      */
1300
-    function sodium_memzero(&$str)
1300
+    function sodium_memzero( &$str )
1301 1301
     {
1302
-        ParagonIE_Sodium_Compat::memzero($str);
1302
+        ParagonIE_Sodium_Compat::memzero( $str );
1303 1303
     }
1304 1304
 }
1305
-if (!is_callable('sodium_pad')) {
1305
+if ( ! is_callable( 'sodium_pad' ) ) {
1306 1306
     /**
1307 1307
      * @see ParagonIE_Sodium_Compat::pad()
1308 1308
      * @param string $unpadded
@@ -1311,12 +1311,12 @@  discard block
 block discarded – undo
1311 1311
      * @throws SodiumException
1312 1312
      * @throws TypeError
1313 1313
      */
1314
-    function sodium_pad($unpadded, $blockSize)
1314
+    function sodium_pad( $unpadded, $blockSize )
1315 1315
     {
1316
-        return ParagonIE_Sodium_Compat::pad($unpadded, $blockSize, true);
1316
+        return ParagonIE_Sodium_Compat::pad( $unpadded, $blockSize, true );
1317 1317
     }
1318 1318
 }
1319
-if (!is_callable('sodium_unpad')) {
1319
+if ( ! is_callable( 'sodium_unpad' ) ) {
1320 1320
     /**
1321 1321
      * @see ParagonIE_Sodium_Compat::pad()
1322 1322
      * @param string $padded
@@ -1325,38 +1325,38 @@  discard block
 block discarded – undo
1325 1325
      * @throws SodiumException
1326 1326
      * @throws TypeError
1327 1327
      */
1328
-    function sodium_unpad($padded, $blockSize)
1328
+    function sodium_unpad( $padded, $blockSize )
1329 1329
     {
1330
-        return ParagonIE_Sodium_Compat::unpad($padded, $blockSize, true);
1330
+        return ParagonIE_Sodium_Compat::unpad( $padded, $blockSize, true );
1331 1331
     }
1332 1332
 }
1333
-if (!is_callable('sodium_randombytes_buf')) {
1333
+if ( ! is_callable( 'sodium_randombytes_buf' ) ) {
1334 1334
     /**
1335 1335
      * @see ParagonIE_Sodium_Compat::randombytes_buf()
1336 1336
      * @param int $amount
1337 1337
      * @return string
1338 1338
      * @throws Exception
1339 1339
      */
1340
-    function sodium_randombytes_buf($amount)
1340
+    function sodium_randombytes_buf( $amount )
1341 1341
     {
1342
-        return ParagonIE_Sodium_Compat::randombytes_buf($amount);
1342
+        return ParagonIE_Sodium_Compat::randombytes_buf( $amount );
1343 1343
     }
1344 1344
 }
1345 1345
 
1346
-if (!is_callable('sodium_randombytes_uniform')) {
1346
+if ( ! is_callable( 'sodium_randombytes_uniform' ) ) {
1347 1347
     /**
1348 1348
      * @see ParagonIE_Sodium_Compat::randombytes_uniform()
1349 1349
      * @param int $upperLimit
1350 1350
      * @return int
1351 1351
      * @throws Exception
1352 1352
      */
1353
-    function sodium_randombytes_uniform($upperLimit)
1353
+    function sodium_randombytes_uniform( $upperLimit )
1354 1354
     {
1355
-        return ParagonIE_Sodium_Compat::randombytes_uniform($upperLimit);
1355
+        return ParagonIE_Sodium_Compat::randombytes_uniform( $upperLimit );
1356 1356
     }
1357 1357
 }
1358 1358
 
1359
-if (!is_callable('sodium_randombytes_random16')) {
1359
+if ( ! is_callable( 'sodium_randombytes_random16' ) ) {
1360 1360
     /**
1361 1361
      * @see ParagonIE_Sodium_Compat::randombytes_random16()
1362 1362
      * @return int
Please login to merge, or discard this patch.
Braces   +91 added lines, -182 removed lines patch added patch discarded remove patch
@@ -115,8 +115,7 @@  discard block
 block discarded – undo
115 115
      * @return void
116 116
      * @throws SodiumException
117 117
      */
118
-    function sodium_add(&$val, $addv)
119
-    {
118
+    function sodium_add(&$val, $addv) {
120 119
         ParagonIE_Sodium_Compat::add($val, $addv);
121 120
     }
122 121
 }
@@ -130,8 +129,7 @@  discard block
 block discarded – undo
130 129
      * @throws SodiumException
131 130
      * @throws TypeError
132 131
      */
133
-    function sodium_base642bin($string, $variant, $ignore ='')
134
-    {
132
+    function sodium_base642bin($string, $variant, $ignore ='') {
135 133
         return ParagonIE_Sodium_Compat::base642bin($string, $variant, $ignore);
136 134
     }
137 135
 }
@@ -144,8 +142,7 @@  discard block
 block discarded – undo
144 142
      * @throws SodiumException
145 143
      * @throws TypeError
146 144
      */
147
-    function sodium_bin2base64($string, $variant)
148
-    {
145
+    function sodium_bin2base64($string, $variant) {
149 146
         return ParagonIE_Sodium_Compat::bin2base64($string, $variant);
150 147
     }
151 148
 }
@@ -157,8 +154,7 @@  discard block
 block discarded – undo
157 154
      * @throws SodiumException
158 155
      * @throws TypeError
159 156
      */
160
-    function sodium_bin2hex($string)
161
-    {
157
+    function sodium_bin2hex($string) {
162 158
         return ParagonIE_Sodium_Compat::bin2hex($string);
163 159
     }
164 160
 }
@@ -171,8 +167,7 @@  discard block
 block discarded – undo
171 167
      * @throws SodiumException
172 168
      * @throws TypeError
173 169
      */
174
-    function sodium_compare($a, $b)
175
-    {
170
+    function sodium_compare($a, $b) {
176 171
         return ParagonIE_Sodium_Compat::compare($a, $b);
177 172
     }
178 173
 }
@@ -185,8 +180,7 @@  discard block
 block discarded – undo
185 180
      * @param string $key
186 181
      * @return string|bool
187 182
      */
188
-    function sodium_crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key)
189
-    {
183
+    function sodium_crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key) {
190 184
         try {
191 185
             return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key);
192 186
         } catch (Error $ex) {
@@ -207,8 +201,7 @@  discard block
 block discarded – undo
207 201
      * @throws SodiumException
208 202
      * @throws TypeError
209 203
      */
210
-    function sodium_crypto_aead_aes256gcm_encrypt($message, $assocData, $nonce, $key)
211
-    {
204
+    function sodium_crypto_aead_aes256gcm_encrypt($message, $assocData, $nonce, $key) {
212 205
         return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt($message, $assocData, $nonce, $key);
213 206
     }
214 207
 }
@@ -217,8 +210,7 @@  discard block
 block discarded – undo
217 210
      * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available()
218 211
      * @return bool
219 212
      */
220
-    function sodium_crypto_aead_aes256gcm_is_available()
221
-    {
213
+    function sodium_crypto_aead_aes256gcm_is_available() {
222 214
         return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available();
223 215
     }
224 216
 }
@@ -231,8 +223,7 @@  discard block
 block discarded – undo
231 223
      * @param string $key
232 224
      * @return string|bool
233 225
      */
234
-    function sodium_crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key)
235
-    {
226
+    function sodium_crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key) {
236 227
         try {
237 228
             return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key);
238 229
         } catch (Error $ex) {
@@ -253,8 +244,7 @@  discard block
 block discarded – undo
253 244
      * @throws SodiumException
254 245
      * @throws TypeError
255 246
      */
256
-    function sodium_crypto_aead_chacha20poly1305_encrypt($message, $assocData, $nonce, $key)
257
-    {
247
+    function sodium_crypto_aead_chacha20poly1305_encrypt($message, $assocData, $nonce, $key) {
258 248
         return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt($message, $assocData, $nonce, $key);
259 249
     }
260 250
 }
@@ -264,8 +254,7 @@  discard block
 block discarded – undo
264 254
      * @return string
265 255
      * @throws Exception
266 256
      */
267
-    function sodium_crypto_aead_chacha20poly1305_keygen()
268
-    {
257
+    function sodium_crypto_aead_chacha20poly1305_keygen() {
269 258
         return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_keygen();
270 259
     }
271 260
 }
@@ -278,8 +267,7 @@  discard block
 block discarded – undo
278 267
      * @param string $key
279 268
      * @return string|bool
280 269
      */
281
-    function sodium_crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key)
282
-    {
270
+    function sodium_crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key) {
283 271
         try {
284 272
             return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key);
285 273
         } catch (Error $ex) {
@@ -300,8 +288,7 @@  discard block
 block discarded – undo
300 288
      * @throws SodiumException
301 289
      * @throws TypeError
302 290
      */
303
-    function sodium_crypto_aead_chacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key)
304
-    {
291
+    function sodium_crypto_aead_chacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key) {
305 292
         return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key);
306 293
     }
307 294
 }
@@ -311,8 +298,7 @@  discard block
 block discarded – undo
311 298
      * @return string
312 299
      * @throws Exception
313 300
      */
314
-    function sodium_crypto_aead_chacha20poly1305_ietf_keygen()
315
-    {
301
+    function sodium_crypto_aead_chacha20poly1305_ietf_keygen() {
316 302
         return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_keygen();
317 303
     }
318 304
 }
@@ -325,8 +311,7 @@  discard block
 block discarded – undo
325 311
      * @param string $key
326 312
      * @return string|bool
327 313
      */
328
-    function sodium_crypto_aead_xchacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key)
329
-    {
314
+    function sodium_crypto_aead_xchacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key) {
330 315
         try {
331 316
             return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key, true);
332 317
         } catch (Error $ex) {
@@ -347,8 +332,7 @@  discard block
 block discarded – undo
347 332
      * @throws SodiumException
348 333
      * @throws TypeError
349 334
      */
350
-    function sodium_crypto_aead_xchacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key)
351
-    {
335
+    function sodium_crypto_aead_xchacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key) {
352 336
         return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key, true);
353 337
     }
354 338
 }
@@ -358,8 +342,7 @@  discard block
 block discarded – undo
358 342
      * @return string
359 343
      * @throws Exception
360 344
      */
361
-    function sodium_crypto_aead_xchacha20poly1305_ietf_keygen()
362
-    {
345
+    function sodium_crypto_aead_xchacha20poly1305_ietf_keygen() {
363 346
         return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_keygen();
364 347
     }
365 348
 }
@@ -372,8 +355,7 @@  discard block
 block discarded – undo
372 355
      * @throws SodiumException
373 356
      * @throws TypeError
374 357
      */
375
-    function sodium_crypto_auth($message, $key)
376
-    {
358
+    function sodium_crypto_auth($message, $key) {
377 359
         return ParagonIE_Sodium_Compat::crypto_auth($message, $key);
378 360
     }
379 361
 }
@@ -383,8 +365,7 @@  discard block
 block discarded – undo
383 365
      * @return string
384 366
      * @throws Exception
385 367
      */
386
-    function sodium_crypto_auth_keygen()
387
-    {
368
+    function sodium_crypto_auth_keygen() {
388 369
         return ParagonIE_Sodium_Compat::crypto_auth_keygen();
389 370
     }
390 371
 }
@@ -398,8 +379,7 @@  discard block
 block discarded – undo
398 379
      * @throws SodiumException
399 380
      * @throws TypeError
400 381
      */
401
-    function sodium_crypto_auth_verify($mac, $message, $key)
402
-    {
382
+    function sodium_crypto_auth_verify($mac, $message, $key) {
403 383
         return ParagonIE_Sodium_Compat::crypto_auth_verify($mac, $message, $key);
404 384
     }
405 385
 }
@@ -413,8 +393,7 @@  discard block
 block discarded – undo
413 393
      * @throws SodiumException
414 394
      * @throws TypeError
415 395
      */
416
-    function sodium_crypto_box($message, $nonce, $kp)
417
-    {
396
+    function sodium_crypto_box($message, $nonce, $kp) {
418 397
         return ParagonIE_Sodium_Compat::crypto_box($message, $nonce, $kp);
419 398
     }
420 399
 }
@@ -425,8 +404,7 @@  discard block
 block discarded – undo
425 404
      * @throws SodiumException
426 405
      * @throws TypeError
427 406
      */
428
-    function sodium_crypto_box_keypair()
429
-    {
407
+    function sodium_crypto_box_keypair() {
430 408
         return ParagonIE_Sodium_Compat::crypto_box_keypair();
431 409
     }
432 410
 }
@@ -439,8 +417,7 @@  discard block
 block discarded – undo
439 417
      * @throws SodiumException
440 418
      * @throws TypeError
441 419
      */
442
-    function sodium_crypto_box_keypair_from_secretkey_and_publickey($sk, $pk)
443
-    {
420
+    function sodium_crypto_box_keypair_from_secretkey_and_publickey($sk, $pk) {
444 421
         return ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey($sk, $pk);
445 422
     }
446 423
 }
@@ -452,8 +429,7 @@  discard block
 block discarded – undo
452 429
      * @param string $kp
453 430
      * @return string|bool
454 431
      */
455
-    function sodium_crypto_box_open($message, $nonce, $kp)
456
-    {
432
+    function sodium_crypto_box_open($message, $nonce, $kp) {
457 433
         try {
458 434
             return ParagonIE_Sodium_Compat::crypto_box_open($message, $nonce, $kp);
459 435
         } catch (Error $ex) {
@@ -471,8 +447,7 @@  discard block
 block discarded – undo
471 447
      * @throws SodiumException
472 448
      * @throws TypeError
473 449
      */
474
-    function sodium_crypto_box_publickey($keypair)
475
-    {
450
+    function sodium_crypto_box_publickey($keypair) {
476 451
         return ParagonIE_Sodium_Compat::crypto_box_publickey($keypair);
477 452
     }
478 453
 }
@@ -484,8 +459,7 @@  discard block
 block discarded – undo
484 459
      * @throws SodiumException
485 460
      * @throws TypeError
486 461
      */
487
-    function sodium_crypto_box_publickey_from_secretkey($sk)
488
-    {
462
+    function sodium_crypto_box_publickey_from_secretkey($sk) {
489 463
         return ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey($sk);
490 464
     }
491 465
 }
@@ -498,8 +472,7 @@  discard block
 block discarded – undo
498 472
      * @throws SodiumException
499 473
      * @throws TypeError
500 474
      */
501
-    function sodium_crypto_box_seal($message, $publicKey)
502
-    {
475
+    function sodium_crypto_box_seal($message, $publicKey) {
503 476
         return ParagonIE_Sodium_Compat::crypto_box_seal($message, $publicKey);
504 477
     }
505 478
 }
@@ -511,8 +484,7 @@  discard block
 block discarded – undo
511 484
      * @return string|bool
512 485
      * @throws SodiumException
513 486
      */
514
-    function sodium_crypto_box_seal_open($message, $kp)
515
-    {
487
+    function sodium_crypto_box_seal_open($message, $kp) {
516 488
         try {
517 489
             return ParagonIE_Sodium_Compat::crypto_box_seal_open($message, $kp);
518 490
         } catch (SodiumException $ex) {
@@ -531,8 +503,7 @@  discard block
 block discarded – undo
531 503
      * @throws SodiumException
532 504
      * @throws TypeError
533 505
      */
534
-    function sodium_crypto_box_secretkey($keypair)
535
-    {
506
+    function sodium_crypto_box_secretkey($keypair) {
536 507
         return ParagonIE_Sodium_Compat::crypto_box_secretkey($keypair);
537 508
     }
538 509
 }
@@ -544,8 +515,7 @@  discard block
 block discarded – undo
544 515
      * @throws SodiumException
545 516
      * @throws TypeError
546 517
      */
547
-    function sodium_crypto_box_seed_keypair($seed)
548
-    {
518
+    function sodium_crypto_box_seed_keypair($seed) {
549 519
         return ParagonIE_Sodium_Compat::crypto_box_seed_keypair($seed);
550 520
     }
551 521
 }
@@ -559,8 +529,7 @@  discard block
 block discarded – undo
559 529
      * @throws SodiumException
560 530
      * @throws TypeError
561 531
      */
562
-    function sodium_crypto_generichash($message, $key = null, $outLen = 32)
563
-    {
532
+    function sodium_crypto_generichash($message, $key = null, $outLen = 32) {
564 533
         return ParagonIE_Sodium_Compat::crypto_generichash($message, $key, $outLen);
565 534
     }
566 535
 }
@@ -573,8 +542,7 @@  discard block
 block discarded – undo
573 542
      * @throws SodiumException
574 543
      * @throws TypeError
575 544
      */
576
-    function sodium_crypto_generichash_final(&$ctx, $outputLength = 32)
577
-    {
545
+    function sodium_crypto_generichash_final(&$ctx, $outputLength = 32) {
578 546
         return ParagonIE_Sodium_Compat::crypto_generichash_final($ctx, $outputLength);
579 547
     }
580 548
 }
@@ -587,8 +555,7 @@  discard block
 block discarded – undo
587 555
      * @throws SodiumException
588 556
      * @throws TypeError
589 557
      */
590
-    function sodium_crypto_generichash_init($key = null, $outLen = 32)
591
-    {
558
+    function sodium_crypto_generichash_init($key = null, $outLen = 32) {
592 559
         return ParagonIE_Sodium_Compat::crypto_generichash_init($key, $outLen);
593 560
     }
594 561
 }
@@ -598,8 +565,7 @@  discard block
 block discarded – undo
598 565
      * @return string
599 566
      * @throws Exception
600 567
      */
601
-    function sodium_crypto_generichash_keygen()
602
-    {
568
+    function sodium_crypto_generichash_keygen() {
603 569
         return ParagonIE_Sodium_Compat::crypto_generichash_keygen();
604 570
     }
605 571
 }
@@ -612,8 +578,7 @@  discard block
 block discarded – undo
612 578
      * @throws SodiumException
613 579
      * @throws TypeError
614 580
      */
615
-    function sodium_crypto_generichash_update(&$ctx, $message = '')
616
-    {
581
+    function sodium_crypto_generichash_update(&$ctx, $message = '') {
617 582
         ParagonIE_Sodium_Compat::crypto_generichash_update($ctx, $message);
618 583
     }
619 584
 }
@@ -623,8 +588,7 @@  discard block
 block discarded – undo
623 588
      * @return string
624 589
      * @throws Exception
625 590
      */
626
-    function sodium_crypto_kdf_keygen()
627
-    {
591
+    function sodium_crypto_kdf_keygen() {
628 592
         return ParagonIE_Sodium_Compat::crypto_kdf_keygen();
629 593
     }
630 594
 }
@@ -638,8 +602,7 @@  discard block
 block discarded – undo
638 602
      * @return string
639 603
      * @throws Exception
640 604
      */
641
-    function sodium_crypto_kdf_derive_from_key($subkey_len, $subkey_id, $context, $key)
642
-    {
605
+    function sodium_crypto_kdf_derive_from_key($subkey_len, $subkey_id, $context, $key) {
643 606
         return ParagonIE_Sodium_Compat::crypto_kdf_derive_from_key(
644 607
             $subkey_len,
645 608
             $subkey_id,
@@ -659,8 +622,7 @@  discard block
 block discarded – undo
659 622
      * @throws SodiumException
660 623
      * @throws TypeError
661 624
      */
662
-    function sodium_crypto_kx($my_secret, $their_public, $client_public, $server_public)
663
-    {
625
+    function sodium_crypto_kx($my_secret, $their_public, $client_public, $server_public) {
664 626
         return ParagonIE_Sodium_Compat::crypto_kx(
665 627
             $my_secret,
666 628
             $their_public,
@@ -675,8 +637,7 @@  discard block
 block discarded – undo
675 637
      * @return string
676 638
      * @throws Exception
677 639
      */
678
-    function sodium_crypto_kx_seed_keypair($seed)
679
-    {
640
+    function sodium_crypto_kx_seed_keypair($seed) {
680 641
         return ParagonIE_Sodium_Compat::crypto_kx_seed_keypair($seed);
681 642
     }
682 643
 }
@@ -685,8 +646,7 @@  discard block
 block discarded – undo
685 646
      * @return string
686 647
      * @throws Exception
687 648
      */
688
-    function sodium_crypto_kx_keypair()
689
-    {
649
+    function sodium_crypto_kx_keypair() {
690 650
         return ParagonIE_Sodium_Compat::crypto_kx_keypair();
691 651
     }
692 652
 }
@@ -697,8 +657,7 @@  discard block
 block discarded – undo
697 657
      * @return array{0: string, 1: string}
698 658
      * @throws SodiumException
699 659
      */
700
-    function sodium_crypto_kx_client_session_keys($keypair, $serverPublicKey)
701
-    {
660
+    function sodium_crypto_kx_client_session_keys($keypair, $serverPublicKey) {
702 661
         return ParagonIE_Sodium_Compat::crypto_kx_client_session_keys($keypair, $serverPublicKey);
703 662
     }
704 663
 }
@@ -709,8 +668,7 @@  discard block
 block discarded – undo
709 668
      * @return array{0: string, 1: string}
710 669
      * @throws SodiumException
711 670
      */
712
-    function sodium_crypto_kx_server_session_keys($keypair, $clientPublicKey)
713
-    {
671
+    function sodium_crypto_kx_server_session_keys($keypair, $clientPublicKey) {
714 672
         return ParagonIE_Sodium_Compat::crypto_kx_server_session_keys($keypair, $clientPublicKey);
715 673
     }
716 674
 }
@@ -720,8 +678,7 @@  discard block
 block discarded – undo
720 678
      * @return string
721 679
      * @throws Exception
722 680
      */
723
-    function sodium_crypto_kx_secretkey($keypair)
724
-    {
681
+    function sodium_crypto_kx_secretkey($keypair) {
725 682
         return ParagonIE_Sodium_Compat::crypto_kx_secretkey($keypair);
726 683
     }
727 684
 }
@@ -731,8 +688,7 @@  discard block
 block discarded – undo
731 688
      * @return string
732 689
      * @throws Exception
733 690
      */
734
-    function sodium_crypto_kx_publickey($keypair)
735
-    {
691
+    function sodium_crypto_kx_publickey($keypair) {
736 692
         return ParagonIE_Sodium_Compat::crypto_kx_publickey($keypair);
737 693
     }
738 694
 }
@@ -749,8 +705,7 @@  discard block
 block discarded – undo
749 705
      * @throws SodiumException
750 706
      * @throws TypeError
751 707
      */
752
-    function sodium_crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit, $algo = null)
753
-    {
708
+    function sodium_crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit, $algo = null) {
754 709
         return ParagonIE_Sodium_Compat::crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit, $algo);
755 710
     }
756 711
 }
@@ -764,8 +719,7 @@  discard block
 block discarded – undo
764 719
      * @throws SodiumException
765 720
      * @throws TypeError
766 721
      */
767
-    function sodium_crypto_pwhash_str($passwd, $opslimit, $memlimit)
768
-    {
722
+    function sodium_crypto_pwhash_str($passwd, $opslimit, $memlimit) {
769 723
         return ParagonIE_Sodium_Compat::crypto_pwhash_str($passwd, $opslimit, $memlimit);
770 724
     }
771 725
 }
@@ -779,8 +733,7 @@  discard block
 block discarded – undo
779 733
      *
780 734
      * @throws SodiumException
781 735
      */
782
-    function sodium_crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit)
783
-    {
736
+    function sodium_crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit) {
784 737
         return ParagonIE_Sodium_Compat::crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit);
785 738
     }
786 739
 }
@@ -793,8 +746,7 @@  discard block
 block discarded – undo
793 746
      * @throws SodiumException
794 747
      * @throws TypeError
795 748
      */
796
-    function sodium_crypto_pwhash_str_verify($passwd, $hash)
797
-    {
749
+    function sodium_crypto_pwhash_str_verify($passwd, $hash) {
798 750
         return ParagonIE_Sodium_Compat::crypto_pwhash_str_verify($passwd, $hash);
799 751
     }
800 752
 }
@@ -810,8 +762,7 @@  discard block
 block discarded – undo
810 762
      * @throws SodiumException
811 763
      * @throws TypeError
812 764
      */
813
-    function sodium_crypto_pwhash_scryptsalsa208sha256($outlen, $passwd, $salt, $opslimit, $memlimit)
814
-    {
765
+    function sodium_crypto_pwhash_scryptsalsa208sha256($outlen, $passwd, $salt, $opslimit, $memlimit) {
815 766
         return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256($outlen, $passwd, $salt, $opslimit, $memlimit);
816 767
     }
817 768
 }
@@ -825,8 +776,7 @@  discard block
 block discarded – undo
825 776
      * @throws SodiumException
826 777
      * @throws TypeError
827 778
      */
828
-    function sodium_crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit)
829
-    {
779
+    function sodium_crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit) {
830 780
         return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit);
831 781
     }
832 782
 }
@@ -839,8 +789,7 @@  discard block
 block discarded – undo
839 789
      * @throws SodiumException
840 790
      * @throws TypeError
841 791
      */
842
-    function sodium_crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash)
843
-    {
792
+    function sodium_crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash) {
844 793
         return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash);
845 794
     }
846 795
 }
@@ -853,8 +802,7 @@  discard block
 block discarded – undo
853 802
      * @throws SodiumException
854 803
      * @throws TypeError
855 804
      */
856
-    function sodium_crypto_scalarmult($n, $p)
857
-    {
805
+    function sodium_crypto_scalarmult($n, $p) {
858 806
         return ParagonIE_Sodium_Compat::crypto_scalarmult($n, $p);
859 807
     }
860 808
 }
@@ -866,8 +814,7 @@  discard block
 block discarded – undo
866 814
      * @throws SodiumException
867 815
      * @throws TypeError
868 816
      */
869
-    function sodium_crypto_scalarmult_base($n)
870
-    {
817
+    function sodium_crypto_scalarmult_base($n) {
871 818
         return ParagonIE_Sodium_Compat::crypto_scalarmult_base($n);
872 819
     }
873 820
 }
@@ -881,8 +828,7 @@  discard block
 block discarded – undo
881 828
      * @throws SodiumException
882 829
      * @throws TypeError
883 830
      */
884
-    function sodium_crypto_secretbox($message, $nonce, $key)
885
-    {
831
+    function sodium_crypto_secretbox($message, $nonce, $key) {
886 832
         return ParagonIE_Sodium_Compat::crypto_secretbox($message, $nonce, $key);
887 833
     }
888 834
 }
@@ -892,8 +838,7 @@  discard block
 block discarded – undo
892 838
      * @return string
893 839
      * @throws Exception
894 840
      */
895
-    function sodium_crypto_secretbox_keygen()
896
-    {
841
+    function sodium_crypto_secretbox_keygen() {
897 842
         return ParagonIE_Sodium_Compat::crypto_secretbox_keygen();
898 843
     }
899 844
 }
@@ -905,8 +850,7 @@  discard block
 block discarded – undo
905 850
      * @param string $key
906 851
      * @return string|bool
907 852
      */
908
-    function sodium_crypto_secretbox_open($message, $nonce, $key)
909
-    {
853
+    function sodium_crypto_secretbox_open($message, $nonce, $key) {
910 854
         try {
911 855
             return ParagonIE_Sodium_Compat::crypto_secretbox_open($message, $nonce, $key);
912 856
         } catch (Error $ex) {
@@ -922,8 +866,7 @@  discard block
 block discarded – undo
922 866
      * @return array<int, string>
923 867
      * @throws SodiumException
924 868
      */
925
-    function sodium_crypto_secretstream_xchacha20poly1305_init_push($key)
926
-    {
869
+    function sodium_crypto_secretstream_xchacha20poly1305_init_push($key) {
927 870
         return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_push($key);
928 871
     }
929 872
 }
@@ -936,8 +879,7 @@  discard block
 block discarded – undo
936 879
      * @return string
937 880
      * @throws SodiumException
938 881
      */
939
-    function sodium_crypto_secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0)
940
-    {
882
+    function sodium_crypto_secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0) {
941 883
         return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_push($state, $msg, $aad, $tag);
942 884
     }
943 885
 }
@@ -948,8 +890,7 @@  discard block
 block discarded – undo
948 890
      * @return string
949 891
      * @throws Exception
950 892
      */
951
-    function sodium_crypto_secretstream_xchacha20poly1305_init_pull($header, $key)
952
-    {
893
+    function sodium_crypto_secretstream_xchacha20poly1305_init_pull($header, $key) {
953 894
         return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_pull($header, $key);
954 895
     }
955 896
 }
@@ -961,8 +902,7 @@  discard block
 block discarded – undo
961 902
      * @return bool|array{0: string, 1: int}
962 903
      * @throws SodiumException
963 904
      */
964
-    function sodium_crypto_secretstream_xchacha20poly1305_pull(&$state, $cipher, $aad = '')
965
-    {
905
+    function sodium_crypto_secretstream_xchacha20poly1305_pull(&$state, $cipher, $aad = '') {
966 906
         return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_pull($state, $cipher, $aad);
967 907
     }
968 908
 }
@@ -972,8 +912,7 @@  discard block
 block discarded – undo
972 912
      * @return void
973 913
      * @throws SodiumException
974 914
      */
975
-    function sodium_crypto_secretstream_xchacha20poly1305_rekey(&$state)
976
-    {
915
+    function sodium_crypto_secretstream_xchacha20poly1305_rekey(&$state) {
977 916
         ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_rekey($state);
978 917
     }
979 918
 }
@@ -982,8 +921,7 @@  discard block
 block discarded – undo
982 921
      * @return string
983 922
      * @throws Exception
984 923
      */
985
-    function sodium_crypto_secretstream_xchacha20poly1305_keygen()
986
-    {
924
+    function sodium_crypto_secretstream_xchacha20poly1305_keygen() {
987 925
         return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_keygen();
988 926
     }
989 927
 }
@@ -996,8 +934,7 @@  discard block
 block discarded – undo
996 934
      * @throws SodiumException
997 935
      * @throws TypeError
998 936
      */
999
-    function sodium_crypto_shorthash($message, $key = '')
1000
-    {
937
+    function sodium_crypto_shorthash($message, $key = '') {
1001 938
         return ParagonIE_Sodium_Compat::crypto_shorthash($message, $key);
1002 939
     }
1003 940
 }
@@ -1007,8 +944,7 @@  discard block
 block discarded – undo
1007 944
      * @return string
1008 945
      * @throws Exception
1009 946
      */
1010
-    function sodium_crypto_shorthash_keygen()
1011
-    {
947
+    function sodium_crypto_shorthash_keygen() {
1012 948
         return ParagonIE_Sodium_Compat::crypto_shorthash_keygen();
1013 949
     }
1014 950
 }
@@ -1021,8 +957,7 @@  discard block
 block discarded – undo
1021 957
      * @throws SodiumException
1022 958
      * @throws TypeError
1023 959
      */
1024
-    function sodium_crypto_sign($message, $sk)
1025
-    {
960
+    function sodium_crypto_sign($message, $sk) {
1026 961
         return ParagonIE_Sodium_Compat::crypto_sign($message, $sk);
1027 962
     }
1028 963
 }
@@ -1035,8 +970,7 @@  discard block
 block discarded – undo
1035 970
      * @throws SodiumException
1036 971
      * @throws TypeError
1037 972
      */
1038
-    function sodium_crypto_sign_detached($message, $sk)
1039
-    {
973
+    function sodium_crypto_sign_detached($message, $sk) {
1040 974
         return ParagonIE_Sodium_Compat::crypto_sign_detached($message, $sk);
1041 975
     }
1042 976
 }
@@ -1049,8 +983,7 @@  discard block
 block discarded – undo
1049 983
      * @throws SodiumException
1050 984
      * @throws TypeError
1051 985
      */
1052
-    function sodium_crypto_sign_keypair_from_secretkey_and_publickey($sk, $pk)
1053
-    {
986
+    function sodium_crypto_sign_keypair_from_secretkey_and_publickey($sk, $pk) {
1054 987
         return ParagonIE_Sodium_Compat::crypto_sign_keypair_from_secretkey_and_publickey($sk, $pk);
1055 988
     }
1056 989
 }
@@ -1061,8 +994,7 @@  discard block
 block discarded – undo
1061 994
      * @throws SodiumException
1062 995
      * @throws TypeError
1063 996
      */
1064
-    function sodium_crypto_sign_keypair()
1065
-    {
997
+    function sodium_crypto_sign_keypair() {
1066 998
         return ParagonIE_Sodium_Compat::crypto_sign_keypair();
1067 999
     }
1068 1000
 }
@@ -1073,8 +1005,7 @@  discard block
 block discarded – undo
1073 1005
      * @param string $pk
1074 1006
      * @return string|bool
1075 1007
      */
1076
-    function sodium_crypto_sign_open($signedMessage, $pk)
1077
-    {
1008
+    function sodium_crypto_sign_open($signedMessage, $pk) {
1078 1009
         try {
1079 1010
             return ParagonIE_Sodium_Compat::crypto_sign_open($signedMessage, $pk);
1080 1011
         } catch (Error $ex) {
@@ -1092,8 +1023,7 @@  discard block
 block discarded – undo
1092 1023
      * @throws SodiumException
1093 1024
      * @throws TypeError
1094 1025
      */
1095
-    function sodium_crypto_sign_publickey($keypair)
1096
-    {
1026
+    function sodium_crypto_sign_publickey($keypair) {
1097 1027
         return ParagonIE_Sodium_Compat::crypto_sign_publickey($keypair);
1098 1028
     }
1099 1029
 }
@@ -1105,8 +1035,7 @@  discard block
 block discarded – undo
1105 1035
      * @throws SodiumException
1106 1036
      * @throws TypeError
1107 1037
      */
1108
-    function sodium_crypto_sign_publickey_from_secretkey($sk)
1109
-    {
1038
+    function sodium_crypto_sign_publickey_from_secretkey($sk) {
1110 1039
         return ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey($sk);
1111 1040
     }
1112 1041
 }
@@ -1118,8 +1047,7 @@  discard block
 block discarded – undo
1118 1047
      * @throws SodiumException
1119 1048
      * @throws TypeError
1120 1049
      */
1121
-    function sodium_crypto_sign_secretkey($keypair)
1122
-    {
1050
+    function sodium_crypto_sign_secretkey($keypair) {
1123 1051
         return ParagonIE_Sodium_Compat::crypto_sign_secretkey($keypair);
1124 1052
     }
1125 1053
 }
@@ -1131,8 +1059,7 @@  discard block
 block discarded – undo
1131 1059
      * @throws SodiumException
1132 1060
      * @throws TypeError
1133 1061
      */
1134
-    function sodium_crypto_sign_seed_keypair($seed)
1135
-    {
1062
+    function sodium_crypto_sign_seed_keypair($seed) {
1136 1063
         return ParagonIE_Sodium_Compat::crypto_sign_seed_keypair($seed);
1137 1064
     }
1138 1065
 }
@@ -1146,8 +1073,7 @@  discard block
 block discarded – undo
1146 1073
      * @throws SodiumException
1147 1074
      * @throws TypeError
1148 1075
      */
1149
-    function sodium_crypto_sign_verify_detached($signature, $message, $pk)
1150
-    {
1076
+    function sodium_crypto_sign_verify_detached($signature, $message, $pk) {
1151 1077
         return ParagonIE_Sodium_Compat::crypto_sign_verify_detached($signature, $message, $pk);
1152 1078
     }
1153 1079
 }
@@ -1159,8 +1085,7 @@  discard block
 block discarded – undo
1159 1085
      * @throws SodiumException
1160 1086
      * @throws TypeError
1161 1087
      */
1162
-    function sodium_crypto_sign_ed25519_pk_to_curve25519($pk)
1163
-    {
1088
+    function sodium_crypto_sign_ed25519_pk_to_curve25519($pk) {
1164 1089
         return ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519($pk);
1165 1090
     }
1166 1091
 }
@@ -1172,8 +1097,7 @@  discard block
 block discarded – undo
1172 1097
      * @throws SodiumException
1173 1098
      * @throws TypeError
1174 1099
      */
1175
-    function sodium_crypto_sign_ed25519_sk_to_curve25519($sk)
1176
-    {
1100
+    function sodium_crypto_sign_ed25519_sk_to_curve25519($sk) {
1177 1101
         return ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519($sk);
1178 1102
     }
1179 1103
 }
@@ -1187,8 +1111,7 @@  discard block
 block discarded – undo
1187 1111
      * @throws SodiumException
1188 1112
      * @throws TypeError
1189 1113
      */
1190
-    function sodium_crypto_stream($len, $nonce, $key)
1191
-    {
1114
+    function sodium_crypto_stream($len, $nonce, $key) {
1192 1115
         return ParagonIE_Sodium_Compat::crypto_stream($len, $nonce, $key);
1193 1116
     }
1194 1117
 }
@@ -1198,8 +1121,7 @@  discard block
 block discarded – undo
1198 1121
      * @return string
1199 1122
      * @throws Exception
1200 1123
      */
1201
-    function sodium_crypto_stream_keygen()
1202
-    {
1124
+    function sodium_crypto_stream_keygen() {
1203 1125
         return ParagonIE_Sodium_Compat::crypto_stream_keygen();
1204 1126
     }
1205 1127
 }
@@ -1213,8 +1135,7 @@  discard block
 block discarded – undo
1213 1135
      * @throws SodiumException
1214 1136
      * @throws TypeError
1215 1137
      */
1216
-    function sodium_crypto_stream_xor($message, $nonce, $key)
1217
-    {
1138
+    function sodium_crypto_stream_xor($message, $nonce, $key) {
1218 1139
         return ParagonIE_Sodium_Compat::crypto_stream_xor($message, $nonce, $key);
1219 1140
     }
1220 1141
 }
@@ -1227,8 +1148,7 @@  discard block
 block discarded – undo
1227 1148
      * @throws SodiumException
1228 1149
      * @throws TypeError
1229 1150
      */
1230
-    function sodium_hex2bin($string)
1231
-    {
1151
+    function sodium_hex2bin($string) {
1232 1152
         return ParagonIE_Sodium_Compat::hex2bin($string);
1233 1153
     }
1234 1154
 }
@@ -1240,8 +1160,7 @@  discard block
 block discarded – undo
1240 1160
      * @throws SodiumException
1241 1161
      * @throws TypeError
1242 1162
      */
1243
-    function sodium_increment(&$string)
1244
-    {
1163
+    function sodium_increment(&$string) {
1245 1164
         ParagonIE_Sodium_Compat::increment($string);
1246 1165
     }
1247 1166
 }
@@ -1250,8 +1169,7 @@  discard block
 block discarded – undo
1250 1169
      * @see ParagonIE_Sodium_Compat::library_version_major()
1251 1170
      * @return int
1252 1171
      */
1253
-    function sodium_library_version_major()
1254
-    {
1172
+    function sodium_library_version_major() {
1255 1173
         return ParagonIE_Sodium_Compat::library_version_major();
1256 1174
     }
1257 1175
 }
@@ -1260,8 +1178,7 @@  discard block
 block discarded – undo
1260 1178
      * @see ParagonIE_Sodium_Compat::library_version_minor()
1261 1179
      * @return int
1262 1180
      */
1263
-    function sodium_library_version_minor()
1264
-    {
1181
+    function sodium_library_version_minor() {
1265 1182
         return ParagonIE_Sodium_Compat::library_version_minor();
1266 1183
     }
1267 1184
 }
@@ -1270,8 +1187,7 @@  discard block
 block discarded – undo
1270 1187
      * @see ParagonIE_Sodium_Compat::version_string()
1271 1188
      * @return string
1272 1189
      */
1273
-    function sodium_version_string()
1274
-    {
1190
+    function sodium_version_string() {
1275 1191
         return ParagonIE_Sodium_Compat::version_string();
1276 1192
     }
1277 1193
 }
@@ -1284,8 +1200,7 @@  discard block
 block discarded – undo
1284 1200
      * @throws SodiumException
1285 1201
      * @throws TypeError
1286 1202
      */
1287
-    function sodium_memcmp($a, $b)
1288
-    {
1203
+    function sodium_memcmp($a, $b) {
1289 1204
         return ParagonIE_Sodium_Compat::memcmp($a, $b);
1290 1205
     }
1291 1206
 }
@@ -1297,8 +1212,7 @@  discard block
 block discarded – undo
1297 1212
      * @throws SodiumException
1298 1213
      * @throws TypeError
1299 1214
      */
1300
-    function sodium_memzero(&$str)
1301
-    {
1215
+    function sodium_memzero(&$str) {
1302 1216
         ParagonIE_Sodium_Compat::memzero($str);
1303 1217
     }
1304 1218
 }
@@ -1311,8 +1225,7 @@  discard block
 block discarded – undo
1311 1225
      * @throws SodiumException
1312 1226
      * @throws TypeError
1313 1227
      */
1314
-    function sodium_pad($unpadded, $blockSize)
1315
-    {
1228
+    function sodium_pad($unpadded, $blockSize) {
1316 1229
         return ParagonIE_Sodium_Compat::pad($unpadded, $blockSize, true);
1317 1230
     }
1318 1231
 }
@@ -1325,8 +1238,7 @@  discard block
 block discarded – undo
1325 1238
      * @throws SodiumException
1326 1239
      * @throws TypeError
1327 1240
      */
1328
-    function sodium_unpad($padded, $blockSize)
1329
-    {
1241
+    function sodium_unpad($padded, $blockSize) {
1330 1242
         return ParagonIE_Sodium_Compat::unpad($padded, $blockSize, true);
1331 1243
     }
1332 1244
 }
@@ -1337,8 +1249,7 @@  discard block
 block discarded – undo
1337 1249
      * @return string
1338 1250
      * @throws Exception
1339 1251
      */
1340
-    function sodium_randombytes_buf($amount)
1341
-    {
1252
+    function sodium_randombytes_buf($amount) {
1342 1253
         return ParagonIE_Sodium_Compat::randombytes_buf($amount);
1343 1254
     }
1344 1255
 }
@@ -1350,8 +1261,7 @@  discard block
 block discarded – undo
1350 1261
      * @return int
1351 1262
      * @throws Exception
1352 1263
      */
1353
-    function sodium_randombytes_uniform($upperLimit)
1354
-    {
1264
+    function sodium_randombytes_uniform($upperLimit) {
1355 1265
         return ParagonIE_Sodium_Compat::randombytes_uniform($upperLimit);
1356 1266
     }
1357 1267
 }
@@ -1362,8 +1272,7 @@  discard block
 block discarded – undo
1362 1272
      * @return int
1363 1273
      * @throws Exception
1364 1274
      */
1365
-    function sodium_randombytes_random16()
1366
-    {
1275
+    function sodium_randombytes_random16() {
1367 1276
         return ParagonIE_Sodium_Compat::randombytes_random16();
1368 1277
     }
1369 1278
 }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/autoload-pedantic.php 1 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 3
 require_once 'autoload.php';
4
-define('DO_PEDANTIC_TEST', true);
4
+define( 'DO_PEDANTIC_TEST', true );
5 5
 
6 6
 ParagonIE_Sodium_Compat::$fastMult = true;
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/autoload.php 3 patches
Indentation   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -1,72 +1,72 @@
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (PHP_VERSION_ID < 70000) {
4
-    if (!is_callable('sodiumCompatAutoloader')) {
5
-        /**
6
-         * Sodium_Compat autoloader.
7
-         *
8
-         * @param string $class Class name to be autoloaded.
9
-         *
10
-         * @return bool         Stop autoloading?
11
-         */
12
-        function sodiumCompatAutoloader($class)
13
-        {
14
-            $namespace = 'ParagonIE_Sodium_';
15
-            // Does the class use the namespace prefix?
16
-            $len = strlen($namespace);
17
-            if (strncmp($namespace, $class, $len) !== 0) {
18
-                // no, move to the next registered autoloader
19
-                return false;
20
-            }
4
+	if (!is_callable('sodiumCompatAutoloader')) {
5
+		/**
6
+		 * Sodium_Compat autoloader.
7
+		 *
8
+		 * @param string $class Class name to be autoloaded.
9
+		 *
10
+		 * @return bool         Stop autoloading?
11
+		 */
12
+		function sodiumCompatAutoloader($class)
13
+		{
14
+			$namespace = 'ParagonIE_Sodium_';
15
+			// Does the class use the namespace prefix?
16
+			$len = strlen($namespace);
17
+			if (strncmp($namespace, $class, $len) !== 0) {
18
+				// no, move to the next registered autoloader
19
+				return false;
20
+			}
21 21
 
22
-            // Get the relative class name
23
-            $relative_class = substr($class, $len);
22
+			// Get the relative class name
23
+			$relative_class = substr($class, $len);
24 24
 
25
-            // Replace the namespace prefix with the base directory, replace namespace
26
-            // separators with directory separators in the relative class name, append
27
-            // with .php
28
-            $file = dirname(__FILE__) . '/src/' . str_replace('_', '/', $relative_class) . '.php';
29
-            // if the file exists, require it
30
-            if (file_exists($file)) {
31
-                require_once $file;
32
-                return true;
33
-            }
34
-            return false;
35
-        }
25
+			// Replace the namespace prefix with the base directory, replace namespace
26
+			// separators with directory separators in the relative class name, append
27
+			// with .php
28
+			$file = dirname(__FILE__) . '/src/' . str_replace('_', '/', $relative_class) . '.php';
29
+			// if the file exists, require it
30
+			if (file_exists($file)) {
31
+				require_once $file;
32
+				return true;
33
+			}
34
+			return false;
35
+		}
36 36
 
37
-        // Now that we have an autoloader, let's register it!
38
-        spl_autoload_register('sodiumCompatAutoloader');
39
-    }
37
+		// Now that we have an autoloader, let's register it!
38
+		spl_autoload_register('sodiumCompatAutoloader');
39
+	}
40 40
 } else {
41
-    require_once dirname(__FILE__) . '/autoload-php7.php';
41
+	require_once dirname(__FILE__) . '/autoload-php7.php';
42 42
 }
43 43
 
44 44
 /* Explicitly, always load the Compat class: */
45 45
 require_once dirname(__FILE__) . '/src/Compat.php';
46 46
 
47 47
 if (!class_exists('SodiumException', false)) {
48
-    require_once dirname(__FILE__) . '/src/SodiumException.php';
48
+	require_once dirname(__FILE__) . '/src/SodiumException.php';
49 49
 }
50 50
 if (PHP_VERSION_ID >= 50300) {
51
-    // Namespaces didn't exist before 5.3.0, so don't even try to use this
52
-    // unless PHP >= 5.3.0
53
-    require_once dirname(__FILE__) . '/lib/namespaced.php';
54
-    require_once dirname(__FILE__) . '/lib/sodium_compat.php';
51
+	// Namespaces didn't exist before 5.3.0, so don't even try to use this
52
+	// unless PHP >= 5.3.0
53
+	require_once dirname(__FILE__) . '/lib/namespaced.php';
54
+	require_once dirname(__FILE__) . '/lib/sodium_compat.php';
55 55
 } else {
56
-    require_once dirname(__FILE__) . '/src/PHP52/SplFixedArray.php';
56
+	require_once dirname(__FILE__) . '/src/PHP52/SplFixedArray.php';
57 57
 }
58 58
 if (PHP_VERSION_ID < 70200 || !extension_loaded('sodium')) {
59
-    if (PHP_VERSION_ID >= 50300 && !defined('SODIUM_CRYPTO_SCALARMULT_BYTES')) {
60
-        require_once dirname(__FILE__) . '/lib/php72compat_const.php';
61
-    }
62
-    if (PHP_VERSION_ID >= 70000) {
63
-        assert(class_exists('ParagonIE_Sodium_Compat'), 'Possible filesystem/autoloader bug?');
64
-    } else {
65
-        assert(class_exists('ParagonIE_Sodium_Compat'));
66
-    }
67
-    require_once(dirname(__FILE__) . '/lib/php72compat.php');
59
+	if (PHP_VERSION_ID >= 50300 && !defined('SODIUM_CRYPTO_SCALARMULT_BYTES')) {
60
+		require_once dirname(__FILE__) . '/lib/php72compat_const.php';
61
+	}
62
+	if (PHP_VERSION_ID >= 70000) {
63
+		assert(class_exists('ParagonIE_Sodium_Compat'), 'Possible filesystem/autoloader bug?');
64
+	} else {
65
+		assert(class_exists('ParagonIE_Sodium_Compat'));
66
+	}
67
+	require_once(dirname(__FILE__) . '/lib/php72compat.php');
68 68
 } elseif (!function_exists('sodium_crypto_stream_xchacha20_xor')) {
69
-    // Older versions of {PHP, ext/sodium} will not define these
70
-    require_once(dirname(__FILE__) . '/lib/php72compat.php');
69
+	// Older versions of {PHP, ext/sodium} will not define these
70
+	require_once(dirname(__FILE__) . '/lib/php72compat.php');
71 71
 }
72 72
 require_once(dirname(__FILE__) . '/lib/ristretto255.php');
Please login to merge, or discard this patch.
Spacing   +27 added lines, -27 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (PHP_VERSION_ID < 70000) {
4
-    if (!is_callable('sodiumCompatAutoloader')) {
3
+if ( PHP_VERSION_ID < 70000 ) {
4
+    if ( ! is_callable( 'sodiumCompatAutoloader' ) ) {
5 5
         /**
6 6
          * Sodium_Compat autoloader.
7 7
          *
@@ -9,25 +9,25 @@  discard block
 block discarded – undo
9 9
          *
10 10
          * @return bool         Stop autoloading?
11 11
          */
12
-        function sodiumCompatAutoloader($class)
12
+        function sodiumCompatAutoloader( $class )
13 13
         {
14 14
             $namespace = 'ParagonIE_Sodium_';
15 15
             // Does the class use the namespace prefix?
16
-            $len = strlen($namespace);
17
-            if (strncmp($namespace, $class, $len) !== 0) {
16
+            $len = strlen( $namespace );
17
+            if ( strncmp( $namespace, $class, $len ) !== 0 ) {
18 18
                 // no, move to the next registered autoloader
19 19
                 return false;
20 20
             }
21 21
 
22 22
             // Get the relative class name
23
-            $relative_class = substr($class, $len);
23
+            $relative_class = substr( $class, $len );
24 24
 
25 25
             // Replace the namespace prefix with the base directory, replace namespace
26 26
             // separators with directory separators in the relative class name, append
27 27
             // with .php
28
-            $file = dirname(__FILE__) . '/src/' . str_replace('_', '/', $relative_class) . '.php';
28
+            $file = dirname( __FILE__ ) . '/src/' . str_replace( '_', '/', $relative_class ) . '.php';
29 29
             // if the file exists, require it
30
-            if (file_exists($file)) {
30
+            if ( file_exists( $file ) ) {
31 31
                 require_once $file;
32 32
                 return true;
33 33
             }
@@ -35,38 +35,38 @@  discard block
 block discarded – undo
35 35
         }
36 36
 
37 37
         // Now that we have an autoloader, let's register it!
38
-        spl_autoload_register('sodiumCompatAutoloader');
38
+        spl_autoload_register( 'sodiumCompatAutoloader' );
39 39
     }
40 40
 } else {
41
-    require_once dirname(__FILE__) . '/autoload-php7.php';
41
+    require_once dirname( __FILE__ ) . '/autoload-php7.php';
42 42
 }
43 43
 
44 44
 /* Explicitly, always load the Compat class: */
45
-require_once dirname(__FILE__) . '/src/Compat.php';
45
+require_once dirname( __FILE__ ) . '/src/Compat.php';
46 46
 
47
-if (!class_exists('SodiumException', false)) {
48
-    require_once dirname(__FILE__) . '/src/SodiumException.php';
47
+if ( ! class_exists( 'SodiumException', false ) ) {
48
+    require_once dirname( __FILE__ ) . '/src/SodiumException.php';
49 49
 }
50
-if (PHP_VERSION_ID >= 50300) {
50
+if ( PHP_VERSION_ID >= 50300 ) {
51 51
     // Namespaces didn't exist before 5.3.0, so don't even try to use this
52 52
     // unless PHP >= 5.3.0
53
-    require_once dirname(__FILE__) . '/lib/namespaced.php';
54
-    require_once dirname(__FILE__) . '/lib/sodium_compat.php';
53
+    require_once dirname( __FILE__ ) . '/lib/namespaced.php';
54
+    require_once dirname( __FILE__ ) . '/lib/sodium_compat.php';
55 55
 } else {
56
-    require_once dirname(__FILE__) . '/src/PHP52/SplFixedArray.php';
56
+    require_once dirname( __FILE__ ) . '/src/PHP52/SplFixedArray.php';
57 57
 }
58
-if (PHP_VERSION_ID < 70200 || !extension_loaded('sodium')) {
59
-    if (PHP_VERSION_ID >= 50300 && !defined('SODIUM_CRYPTO_SCALARMULT_BYTES')) {
60
-        require_once dirname(__FILE__) . '/lib/php72compat_const.php';
58
+if ( PHP_VERSION_ID < 70200 || ! extension_loaded( 'sodium' ) ) {
59
+    if ( PHP_VERSION_ID >= 50300 && ! defined( 'SODIUM_CRYPTO_SCALARMULT_BYTES' ) ) {
60
+        require_once dirname( __FILE__ ) . '/lib/php72compat_const.php';
61 61
     }
62
-    if (PHP_VERSION_ID >= 70000) {
63
-        assert(class_exists('ParagonIE_Sodium_Compat'), 'Possible filesystem/autoloader bug?');
62
+    if ( PHP_VERSION_ID >= 70000 ) {
63
+        assert( class_exists( 'ParagonIE_Sodium_Compat' ), 'Possible filesystem/autoloader bug?' );
64 64
     } else {
65
-        assert(class_exists('ParagonIE_Sodium_Compat'));
65
+        assert( class_exists( 'ParagonIE_Sodium_Compat' ) );
66 66
     }
67
-    require_once(dirname(__FILE__) . '/lib/php72compat.php');
68
-} elseif (!function_exists('sodium_crypto_stream_xchacha20_xor')) {
67
+    require_once( dirname( __FILE__ ) . '/lib/php72compat.php' );
68
+} elseif ( ! function_exists( 'sodium_crypto_stream_xchacha20_xor' ) ) {
69 69
     // Older versions of {PHP, ext/sodium} will not define these
70
-    require_once(dirname(__FILE__) . '/lib/php72compat.php');
70
+    require_once( dirname( __FILE__ ) . '/lib/php72compat.php' );
71 71
 }
72
-require_once(dirname(__FILE__) . '/lib/ristretto255.php');
72
+require_once( dirname( __FILE__ ) . '/lib/ristretto255.php' );
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -9,8 +9,7 @@
 block discarded – undo
9 9
          *
10 10
          * @return bool         Stop autoloading?
11 11
          */
12
-        function sodiumCompatAutoloader($class)
13
-        {
12
+        function sodiumCompatAutoloader($class) {
14 13
             $namespace = 'ParagonIE_Sodium_';
15 14
             // Does the class use the namespace prefix?
16 15
             $len = strlen($namespace);
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/autoload-php7.php 2 patches
Indentation   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -3,29 +3,29 @@
 block discarded – undo
3 3
  This file should only ever be loaded on PHP 7+
4 4
  */
5 5
 if (PHP_VERSION_ID < 70000) {
6
-    return;
6
+	return;
7 7
 }
8 8
 
9 9
 spl_autoload_register(function ($class) {
10
-    $namespace = 'ParagonIE_Sodium_';
11
-    // Does the class use the namespace prefix?
12
-    $len = strlen($namespace);
13
-    if (strncmp($namespace, $class, $len) !== 0) {
14
-        // no, move to the next registered autoloader
15
-        return false;
16
-    }
10
+	$namespace = 'ParagonIE_Sodium_';
11
+	// Does the class use the namespace prefix?
12
+	$len = strlen($namespace);
13
+	if (strncmp($namespace, $class, $len) !== 0) {
14
+		// no, move to the next registered autoloader
15
+		return false;
16
+	}
17 17
 
18
-    // Get the relative class name
19
-    $relative_class = substr($class, $len);
18
+	// Get the relative class name
19
+	$relative_class = substr($class, $len);
20 20
 
21
-    // Replace the namespace prefix with the base directory, replace namespace
22
-    // separators with directory separators in the relative class name, append
23
-    // with .php
24
-    $file = dirname(__FILE__) . '/src/' . str_replace('_', '/', $relative_class) . '.php';
25
-    // if the file exists, require it
26
-    if (file_exists($file)) {
27
-        require_once $file;
28
-        return true;
29
-    }
30
-    return false;
21
+	// Replace the namespace prefix with the base directory, replace namespace
22
+	// separators with directory separators in the relative class name, append
23
+	// with .php
24
+	$file = dirname(__FILE__) . '/src/' . str_replace('_', '/', $relative_class) . '.php';
25
+	// if the file exists, require it
26
+	if (file_exists($file)) {
27
+		require_once $file;
28
+		return true;
29
+	}
30
+	return false;
31 31
 });
Please login to merge, or discard this patch.
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -2,28 +2,28 @@
 block discarded – undo
2 2
 /*
3 3
  This file should only ever be loaded on PHP 7+
4 4
  */
5
-if (PHP_VERSION_ID < 70000) {
5
+if ( PHP_VERSION_ID < 70000 ) {
6 6
     return;
7 7
 }
8 8
 
9
-spl_autoload_register(function ($class) {
9
+spl_autoload_register( function( $class ) {
10 10
     $namespace = 'ParagonIE_Sodium_';
11 11
     // Does the class use the namespace prefix?
12
-    $len = strlen($namespace);
13
-    if (strncmp($namespace, $class, $len) !== 0) {
12
+    $len = strlen( $namespace );
13
+    if ( strncmp( $namespace, $class, $len ) !== 0 ) {
14 14
         // no, move to the next registered autoloader
15 15
         return false;
16 16
     }
17 17
 
18 18
     // Get the relative class name
19
-    $relative_class = substr($class, $len);
19
+    $relative_class = substr( $class, $len );
20 20
 
21 21
     // Replace the namespace prefix with the base directory, replace namespace
22 22
     // separators with directory separators in the relative class name, append
23 23
     // with .php
24
-    $file = dirname(__FILE__) . '/src/' . str_replace('_', '/', $relative_class) . '.php';
24
+    $file = dirname( __FILE__ ) . '/src/' . str_replace( '_', '/', $relative_class ) . '.php';
25 25
     // if the file exists, require it
26
-    if (file_exists($file)) {
26
+    if ( file_exists( $file ) ) {
27 27
         require_once $file;
28 28
         return true;
29 29
     }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/autoload-phpunit.php 2 patches
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -3,6 +3,6 @@
 block discarded – undo
3 3
 require_once (dirname(__FILE__) . '/vendor/autoload.php');
4 4
 
5 5
 if (PHP_VERSION_ID >= 50300) {
6
-    require_once (dirname(__FILE__) . '/tests/phpunit-shim.php');
6
+	require_once (dirname(__FILE__) . '/tests/phpunit-shim.php');
7 7
 }
8 8
 require_once (dirname(__FILE__) . '/autoload.php');
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -1,8 +1,8 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-require_once (dirname(__FILE__) . '/vendor/autoload.php');
3
+require_once ( dirname( __FILE__ ) . '/vendor/autoload.php' );
4 4
 
5
-if (PHP_VERSION_ID >= 50300) {
6
-    require_once (dirname(__FILE__) . '/tests/phpunit-shim.php');
5
+if ( PHP_VERSION_ID >= 50300 ) {
6
+    require_once ( dirname( __FILE__ ) . '/tests/phpunit-shim.php' );
7 7
 }
8
-require_once (dirname(__FILE__) . '/autoload.php');
8
+require_once ( dirname( __FILE__ ) . '/autoload.php' );
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Crypto.php 3 patches
Indentation   +1639 added lines, -1639 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_Crypto', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -14,1642 +14,1642 @@  discard block
 block discarded – undo
14 14
  */
15 15
 abstract class ParagonIE_Sodium_Crypto
16 16
 {
17
-    const aead_chacha20poly1305_KEYBYTES = 32;
18
-    const aead_chacha20poly1305_NSECBYTES = 0;
19
-    const aead_chacha20poly1305_NPUBBYTES = 8;
20
-    const aead_chacha20poly1305_ABYTES = 16;
21
-
22
-    const aead_chacha20poly1305_IETF_KEYBYTES = 32;
23
-    const aead_chacha20poly1305_IETF_NSECBYTES = 0;
24
-    const aead_chacha20poly1305_IETF_NPUBBYTES = 12;
25
-    const aead_chacha20poly1305_IETF_ABYTES = 16;
26
-
27
-    const aead_xchacha20poly1305_IETF_KEYBYTES = 32;
28
-    const aead_xchacha20poly1305_IETF_NSECBYTES = 0;
29
-    const aead_xchacha20poly1305_IETF_NPUBBYTES = 24;
30
-    const aead_xchacha20poly1305_IETF_ABYTES = 16;
31
-
32
-    const box_curve25519xsalsa20poly1305_SEEDBYTES = 32;
33
-    const box_curve25519xsalsa20poly1305_PUBLICKEYBYTES = 32;
34
-    const box_curve25519xsalsa20poly1305_SECRETKEYBYTES = 32;
35
-    const box_curve25519xsalsa20poly1305_BEFORENMBYTES = 32;
36
-    const box_curve25519xsalsa20poly1305_NONCEBYTES = 24;
37
-    const box_curve25519xsalsa20poly1305_MACBYTES = 16;
38
-    const box_curve25519xsalsa20poly1305_BOXZEROBYTES = 16;
39
-    const box_curve25519xsalsa20poly1305_ZEROBYTES = 32;
40
-
41
-    const onetimeauth_poly1305_BYTES = 16;
42
-    const onetimeauth_poly1305_KEYBYTES = 32;
43
-
44
-    const secretbox_xsalsa20poly1305_KEYBYTES = 32;
45
-    const secretbox_xsalsa20poly1305_NONCEBYTES = 24;
46
-    const secretbox_xsalsa20poly1305_MACBYTES = 16;
47
-    const secretbox_xsalsa20poly1305_BOXZEROBYTES = 16;
48
-    const secretbox_xsalsa20poly1305_ZEROBYTES = 32;
49
-
50
-    const secretbox_xchacha20poly1305_KEYBYTES = 32;
51
-    const secretbox_xchacha20poly1305_NONCEBYTES = 24;
52
-    const secretbox_xchacha20poly1305_MACBYTES = 16;
53
-    const secretbox_xchacha20poly1305_BOXZEROBYTES = 16;
54
-    const secretbox_xchacha20poly1305_ZEROBYTES = 32;
55
-
56
-    const stream_salsa20_KEYBYTES = 32;
57
-
58
-    /**
59
-     * AEAD Decryption with ChaCha20-Poly1305
60
-     *
61
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
62
-     *
63
-     * @param string $message
64
-     * @param string $ad
65
-     * @param string $nonce
66
-     * @param string $key
67
-     * @return string
68
-     * @throws SodiumException
69
-     * @throws TypeError
70
-     */
71
-    public static function aead_chacha20poly1305_decrypt(
72
-        $message = '',
73
-        $ad = '',
74
-        $nonce = '',
75
-        $key = ''
76
-    ) {
77
-        /** @var int $len - Length of message (ciphertext + MAC) */
78
-        $len = ParagonIE_Sodium_Core_Util::strlen($message);
79
-
80
-        /** @var int  $clen - Length of ciphertext */
81
-        $clen = $len - self::aead_chacha20poly1305_ABYTES;
82
-
83
-        /** @var int $adlen - Length of associated data */
84
-        $adlen = ParagonIE_Sodium_Core_Util::strlen($ad);
85
-
86
-        /** @var string $mac - Message authentication code */
87
-        $mac = ParagonIE_Sodium_Core_Util::substr(
88
-            $message,
89
-            $clen,
90
-            self::aead_chacha20poly1305_ABYTES
91
-        );
92
-
93
-        /** @var string $ciphertext - The encrypted message (sans MAC) */
94
-        $ciphertext = ParagonIE_Sodium_Core_Util::substr($message, 0, $clen);
95
-
96
-        /** @var string The first block of the chacha20 keystream, used as a poly1305 key */
97
-        $block0 = ParagonIE_Sodium_Core_ChaCha20::stream(
98
-            32,
99
-            $nonce,
100
-            $key
101
-        );
102
-
103
-        /* Recalculate the Poly1305 authentication tag (MAC): */
104
-        $state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
105
-        try {
106
-            ParagonIE_Sodium_Compat::memzero($block0);
107
-        } catch (SodiumException $ex) {
108
-            $block0 = null;
109
-        }
110
-        $state->update($ad);
111
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
112
-        $state->update($ciphertext);
113
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($clen));
114
-        $computed_mac = $state->finish();
115
-
116
-        /* Compare the given MAC with the recalculated MAC: */
117
-        if (!ParagonIE_Sodium_Core_Util::verify_16($computed_mac, $mac)) {
118
-            throw new SodiumException('Invalid MAC');
119
-        }
120
-
121
-        // Here, we know that the MAC is valid, so we decrypt and return the plaintext
122
-        return ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
123
-            $ciphertext,
124
-            $nonce,
125
-            $key,
126
-            ParagonIE_Sodium_Core_Util::store64_le(1)
127
-        );
128
-    }
129
-
130
-    /**
131
-     * AEAD Encryption with ChaCha20-Poly1305
132
-     *
133
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
134
-     *
135
-     * @param string $message
136
-     * @param string $ad
137
-     * @param string $nonce
138
-     * @param string $key
139
-     * @return string
140
-     * @throws SodiumException
141
-     * @throws TypeError
142
-     */
143
-    public static function aead_chacha20poly1305_encrypt(
144
-        $message = '',
145
-        $ad = '',
146
-        $nonce = '',
147
-        $key = ''
148
-    ) {
149
-        /** @var int $len - Length of the plaintext message */
150
-        $len = ParagonIE_Sodium_Core_Util::strlen($message);
151
-
152
-        /** @var int $adlen - Length of the associated data */
153
-        $adlen = ParagonIE_Sodium_Core_Util::strlen($ad);
154
-
155
-        /** @var string The first block of the chacha20 keystream, used as a poly1305 key */
156
-        $block0 = ParagonIE_Sodium_Core_ChaCha20::stream(
157
-            32,
158
-            $nonce,
159
-            $key
160
-        );
161
-        $state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
162
-        try {
163
-            ParagonIE_Sodium_Compat::memzero($block0);
164
-        } catch (SodiumException $ex) {
165
-            $block0 = null;
166
-        }
167
-
168
-        /** @var string $ciphertext - Raw encrypted data */
169
-        $ciphertext = ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
170
-            $message,
171
-            $nonce,
172
-            $key,
173
-            ParagonIE_Sodium_Core_Util::store64_le(1)
174
-        );
175
-
176
-        $state->update($ad);
177
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
178
-        $state->update($ciphertext);
179
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($len));
180
-        return $ciphertext . $state->finish();
181
-    }
182
-
183
-    /**
184
-     * AEAD Decryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
185
-     *
186
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
187
-     *
188
-     * @param string $message
189
-     * @param string $ad
190
-     * @param string $nonce
191
-     * @param string $key
192
-     * @return string
193
-     * @throws SodiumException
194
-     * @throws TypeError
195
-     */
196
-    public static function aead_chacha20poly1305_ietf_decrypt(
197
-        $message = '',
198
-        $ad = '',
199
-        $nonce = '',
200
-        $key = ''
201
-    ) {
202
-        /** @var int $adlen - Length of associated data */
203
-        $adlen = ParagonIE_Sodium_Core_Util::strlen($ad);
204
-
205
-        /** @var int $len - Length of message (ciphertext + MAC) */
206
-        $len = ParagonIE_Sodium_Core_Util::strlen($message);
207
-
208
-        /** @var int  $clen - Length of ciphertext */
209
-        $clen = $len - self::aead_chacha20poly1305_IETF_ABYTES;
210
-
211
-        /** @var string The first block of the chacha20 keystream, used as a poly1305 key */
212
-        $block0 = ParagonIE_Sodium_Core_ChaCha20::ietfStream(
213
-            32,
214
-            $nonce,
215
-            $key
216
-        );
217
-
218
-        /** @var string $mac - Message authentication code */
219
-        $mac = ParagonIE_Sodium_Core_Util::substr(
220
-            $message,
221
-            $len - self::aead_chacha20poly1305_IETF_ABYTES,
222
-            self::aead_chacha20poly1305_IETF_ABYTES
223
-        );
224
-
225
-        /** @var string $ciphertext - The encrypted message (sans MAC) */
226
-        $ciphertext = ParagonIE_Sodium_Core_Util::substr(
227
-            $message,
228
-            0,
229
-            $len - self::aead_chacha20poly1305_IETF_ABYTES
230
-        );
231
-
232
-        /* Recalculate the Poly1305 authentication tag (MAC): */
233
-        $state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
234
-        try {
235
-            ParagonIE_Sodium_Compat::memzero($block0);
236
-        } catch (SodiumException $ex) {
237
-            $block0 = null;
238
-        }
239
-        $state->update($ad);
240
-        $state->update(str_repeat("\x00", ((0x10 - $adlen) & 0xf)));
241
-        $state->update($ciphertext);
242
-        $state->update(str_repeat("\x00", (0x10 - $clen) & 0xf));
243
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
244
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($clen));
245
-        $computed_mac = $state->finish();
246
-
247
-        /* Compare the given MAC with the recalculated MAC: */
248
-        if (!ParagonIE_Sodium_Core_Util::verify_16($computed_mac, $mac)) {
249
-            throw new SodiumException('Invalid MAC');
250
-        }
251
-
252
-        // Here, we know that the MAC is valid, so we decrypt and return the plaintext
253
-        return ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
254
-            $ciphertext,
255
-            $nonce,
256
-            $key,
257
-            ParagonIE_Sodium_Core_Util::store64_le(1)
258
-        );
259
-    }
260
-
261
-    /**
262
-     * AEAD Encryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
263
-     *
264
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
265
-     *
266
-     * @param string $message
267
-     * @param string $ad
268
-     * @param string $nonce
269
-     * @param string $key
270
-     * @return string
271
-     * @throws SodiumException
272
-     * @throws TypeError
273
-     */
274
-    public static function aead_chacha20poly1305_ietf_encrypt(
275
-        $message = '',
276
-        $ad = '',
277
-        $nonce = '',
278
-        $key = ''
279
-    ) {
280
-        /** @var int $len - Length of the plaintext message */
281
-        $len = ParagonIE_Sodium_Core_Util::strlen($message);
282
-
283
-        /** @var int $adlen - Length of the associated data */
284
-        $adlen = ParagonIE_Sodium_Core_Util::strlen($ad);
285
-
286
-        /** @var string The first block of the chacha20 keystream, used as a poly1305 key */
287
-        $block0 = ParagonIE_Sodium_Core_ChaCha20::ietfStream(
288
-            32,
289
-            $nonce,
290
-            $key
291
-        );
292
-        $state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
293
-        try {
294
-            ParagonIE_Sodium_Compat::memzero($block0);
295
-        } catch (SodiumException $ex) {
296
-            $block0 = null;
297
-        }
298
-
299
-        /** @var string $ciphertext - Raw encrypted data */
300
-        $ciphertext = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
301
-            $message,
302
-            $nonce,
303
-            $key,
304
-            ParagonIE_Sodium_Core_Util::store64_le(1)
305
-        );
306
-
307
-        $state->update($ad);
308
-        $state->update(str_repeat("\x00", ((0x10 - $adlen) & 0xf)));
309
-        $state->update($ciphertext);
310
-        $state->update(str_repeat("\x00", ((0x10 - $len) & 0xf)));
311
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
312
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($len));
313
-        return $ciphertext . $state->finish();
314
-    }
315
-
316
-    /**
317
-     * AEAD Decryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
318
-     *
319
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
320
-     *
321
-     * @param string $message
322
-     * @param string $ad
323
-     * @param string $nonce
324
-     * @param string $key
325
-     * @return string
326
-     * @throws SodiumException
327
-     * @throws TypeError
328
-     */
329
-    public static function aead_xchacha20poly1305_ietf_decrypt(
330
-        $message = '',
331
-        $ad = '',
332
-        $nonce = '',
333
-        $key = ''
334
-    ) {
335
-        $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
336
-            ParagonIE_Sodium_Core_Util::substr($nonce, 0, 16),
337
-            $key
338
-        );
339
-        $nonceLast = "\x00\x00\x00\x00" .
340
-            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);
341
-
342
-        return self::aead_chacha20poly1305_ietf_decrypt($message, $ad, $nonceLast, $subkey);
343
-    }
344
-
345
-    /**
346
-     * AEAD Encryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
347
-     *
348
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
349
-     *
350
-     * @param string $message
351
-     * @param string $ad
352
-     * @param string $nonce
353
-     * @param string $key
354
-     * @return string
355
-     * @throws SodiumException
356
-     * @throws TypeError
357
-     */
358
-    public static function aead_xchacha20poly1305_ietf_encrypt(
359
-        $message = '',
360
-        $ad = '',
361
-        $nonce = '',
362
-        $key = ''
363
-    ) {
364
-        $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
365
-            ParagonIE_Sodium_Core_Util::substr($nonce, 0, 16),
366
-            $key
367
-        );
368
-        $nonceLast = "\x00\x00\x00\x00" .
369
-            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);
370
-
371
-        return self::aead_chacha20poly1305_ietf_encrypt($message, $ad, $nonceLast, $subkey);
372
-    }
373
-
374
-    /**
375
-     * HMAC-SHA-512-256 (a.k.a. the leftmost 256 bits of HMAC-SHA-512)
376
-     *
377
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
378
-     *
379
-     * @param string $message
380
-     * @param string $key
381
-     * @return string
382
-     * @throws TypeError
383
-     */
384
-    public static function auth($message, $key)
385
-    {
386
-        return ParagonIE_Sodium_Core_Util::substr(
387
-            hash_hmac('sha512', $message, $key, true),
388
-            0,
389
-            32
390
-        );
391
-    }
392
-
393
-    /**
394
-     * HMAC-SHA-512-256 validation. Constant-time via hash_equals().
395
-     *
396
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
397
-     *
398
-     * @param string $mac
399
-     * @param string $message
400
-     * @param string $key
401
-     * @return bool
402
-     * @throws SodiumException
403
-     * @throws TypeError
404
-     */
405
-    public static function auth_verify($mac, $message, $key)
406
-    {
407
-        return ParagonIE_Sodium_Core_Util::hashEquals(
408
-            $mac,
409
-            self::auth($message, $key)
410
-        );
411
-    }
412
-
413
-    /**
414
-     * X25519 key exchange followed by XSalsa20Poly1305 symmetric encryption
415
-     *
416
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
417
-     *
418
-     * @param string $plaintext
419
-     * @param string $nonce
420
-     * @param string $keypair
421
-     * @return string
422
-     * @throws SodiumException
423
-     * @throws TypeError
424
-     */
425
-    public static function box($plaintext, $nonce, $keypair)
426
-    {
427
-        $c = self::secretbox(
428
-            $plaintext,
429
-            $nonce,
430
-            self::box_beforenm(
431
-                self::box_secretkey($keypair),
432
-                self::box_publickey($keypair)
433
-            )
434
-        );
435
-        return $c;
436
-    }
437
-
438
-    /**
439
-     * X25519-XSalsa20-Poly1305 with one ephemeral X25519 keypair.
440
-     *
441
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
442
-     *
443
-     * @param string $message
444
-     * @param string $publicKey
445
-     * @return string
446
-     * @throws SodiumException
447
-     * @throws TypeError
448
-     */
449
-    public static function box_seal($message, $publicKey)
450
-    {
451
-        /** @var string $ephemeralKeypair */
452
-        $ephemeralKeypair = self::box_keypair();
453
-
454
-        /** @var string $ephemeralSK */
455
-        $ephemeralSK = self::box_secretkey($ephemeralKeypair);
456
-
457
-        /** @var string $ephemeralPK */
458
-        $ephemeralPK = self::box_publickey($ephemeralKeypair);
459
-
460
-        /** @var string $nonce */
461
-        $nonce = self::generichash(
462
-            $ephemeralPK . $publicKey,
463
-            '',
464
-            24
465
-        );
466
-
467
-        /** @var string $keypair - The combined keypair used in crypto_box() */
468
-        $keypair = self::box_keypair_from_secretkey_and_publickey($ephemeralSK, $publicKey);
469
-
470
-        /** @var string $ciphertext Ciphertext + MAC from crypto_box */
471
-        $ciphertext = self::box($message, $nonce, $keypair);
472
-        try {
473
-            ParagonIE_Sodium_Compat::memzero($ephemeralKeypair);
474
-            ParagonIE_Sodium_Compat::memzero($ephemeralSK);
475
-            ParagonIE_Sodium_Compat::memzero($nonce);
476
-        } catch (SodiumException $ex) {
477
-            $ephemeralKeypair = null;
478
-            $ephemeralSK = null;
479
-            $nonce = null;
480
-        }
481
-        return $ephemeralPK . $ciphertext;
482
-    }
483
-
484
-    /**
485
-     * Opens a message encrypted via box_seal().
486
-     *
487
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
488
-     *
489
-     * @param string $message
490
-     * @param string $keypair
491
-     * @return string
492
-     * @throws SodiumException
493
-     * @throws TypeError
494
-     */
495
-    public static function box_seal_open($message, $keypair)
496
-    {
497
-        /** @var string $ephemeralPK */
498
-        $ephemeralPK = ParagonIE_Sodium_Core_Util::substr($message, 0, 32);
499
-
500
-        /** @var string $ciphertext (ciphertext + MAC) */
501
-        $ciphertext = ParagonIE_Sodium_Core_Util::substr($message, 32);
502
-
503
-        /** @var string $secretKey */
504
-        $secretKey = self::box_secretkey($keypair);
505
-
506
-        /** @var string $publicKey */
507
-        $publicKey = self::box_publickey($keypair);
508
-
509
-        /** @var string $nonce */
510
-        $nonce = self::generichash(
511
-            $ephemeralPK . $publicKey,
512
-            '',
513
-            24
514
-        );
515
-
516
-        /** @var string $keypair */
517
-        $keypair = self::box_keypair_from_secretkey_and_publickey($secretKey, $ephemeralPK);
518
-
519
-        /** @var string $m */
520
-        $m = self::box_open($ciphertext, $nonce, $keypair);
521
-        try {
522
-            ParagonIE_Sodium_Compat::memzero($secretKey);
523
-            ParagonIE_Sodium_Compat::memzero($ephemeralPK);
524
-            ParagonIE_Sodium_Compat::memzero($nonce);
525
-        } catch (SodiumException $ex) {
526
-            $secretKey = null;
527
-            $ephemeralPK = null;
528
-            $nonce = null;
529
-        }
530
-        return $m;
531
-    }
532
-
533
-    /**
534
-     * Used by crypto_box() to get the crypto_secretbox() key.
535
-     *
536
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
537
-     *
538
-     * @param string $sk
539
-     * @param string $pk
540
-     * @return string
541
-     * @throws SodiumException
542
-     * @throws TypeError
543
-     */
544
-    public static function box_beforenm($sk, $pk)
545
-    {
546
-        return ParagonIE_Sodium_Core_HSalsa20::hsalsa20(
547
-            str_repeat("\x00", 16),
548
-            self::scalarmult($sk, $pk)
549
-        );
550
-    }
551
-
552
-    /**
553
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
554
-     *
555
-     * @return string
556
-     * @throws Exception
557
-     * @throws SodiumException
558
-     * @throws TypeError
559
-     */
560
-    public static function box_keypair()
561
-    {
562
-        $sKey = random_bytes(32);
563
-        $pKey = self::scalarmult_base($sKey);
564
-        return $sKey . $pKey;
565
-    }
566
-
567
-    /**
568
-     * @param string $seed
569
-     * @return string
570
-     * @throws SodiumException
571
-     * @throws TypeError
572
-     */
573
-    public static function box_seed_keypair($seed)
574
-    {
575
-        $sKey = ParagonIE_Sodium_Core_Util::substr(
576
-            hash('sha512', $seed, true),
577
-            0,
578
-            32
579
-        );
580
-        $pKey = self::scalarmult_base($sKey);
581
-        return $sKey . $pKey;
582
-    }
583
-
584
-    /**
585
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
586
-     *
587
-     * @param string $sKey
588
-     * @param string $pKey
589
-     * @return string
590
-     * @throws TypeError
591
-     */
592
-    public static function box_keypair_from_secretkey_and_publickey($sKey, $pKey)
593
-    {
594
-        return ParagonIE_Sodium_Core_Util::substr($sKey, 0, 32) .
595
-            ParagonIE_Sodium_Core_Util::substr($pKey, 0, 32);
596
-    }
597
-
598
-    /**
599
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
600
-     *
601
-     * @param string $keypair
602
-     * @return string
603
-     * @throws RangeException
604
-     * @throws TypeError
605
-     */
606
-    public static function box_secretkey($keypair)
607
-    {
608
-        if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== 64) {
609
-            throw new RangeException(
610
-                'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES bytes long.'
611
-            );
612
-        }
613
-        return ParagonIE_Sodium_Core_Util::substr($keypair, 0, 32);
614
-    }
615
-
616
-    /**
617
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
618
-     *
619
-     * @param string $keypair
620
-     * @return string
621
-     * @throws RangeException
622
-     * @throws TypeError
623
-     */
624
-    public static function box_publickey($keypair)
625
-    {
626
-        if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
627
-            throw new RangeException(
628
-                'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES bytes long.'
629
-            );
630
-        }
631
-        return ParagonIE_Sodium_Core_Util::substr($keypair, 32, 32);
632
-    }
633
-
634
-    /**
635
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
636
-     *
637
-     * @param string $sKey
638
-     * @return string
639
-     * @throws RangeException
640
-     * @throws SodiumException
641
-     * @throws TypeError
642
-     */
643
-    public static function box_publickey_from_secretkey($sKey)
644
-    {
645
-        if (ParagonIE_Sodium_Core_Util::strlen($sKey) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_SECRETKEYBYTES) {
646
-            throw new RangeException(
647
-                'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_SECRETKEYBYTES bytes long.'
648
-            );
649
-        }
650
-        return self::scalarmult_base($sKey);
651
-    }
652
-
653
-    /**
654
-     * Decrypt a message encrypted with box().
655
-     *
656
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
657
-     *
658
-     * @param string $ciphertext
659
-     * @param string $nonce
660
-     * @param string $keypair
661
-     * @return string
662
-     * @throws SodiumException
663
-     * @throws TypeError
664
-     */
665
-    public static function box_open($ciphertext, $nonce, $keypair)
666
-    {
667
-        return self::secretbox_open(
668
-            $ciphertext,
669
-            $nonce,
670
-            self::box_beforenm(
671
-                self::box_secretkey($keypair),
672
-                self::box_publickey($keypair)
673
-            )
674
-        );
675
-    }
676
-
677
-    /**
678
-     * Calculate a BLAKE2b hash.
679
-     *
680
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
681
-     *
682
-     * @param string $message
683
-     * @param string|null $key
684
-     * @param int $outlen
685
-     * @return string
686
-     * @throws RangeException
687
-     * @throws SodiumException
688
-     * @throws TypeError
689
-     */
690
-    public static function generichash($message, $key = '', $outlen = 32)
691
-    {
692
-        // This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
693
-        ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
694
-
695
-        $k = null;
696
-        if (!empty($key)) {
697
-            /** @var SplFixedArray $k */
698
-            $k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($key);
699
-            if ($k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES) {
700
-                throw new RangeException('Invalid key size');
701
-            }
702
-        }
703
-
704
-        /** @var SplFixedArray $in */
705
-        $in = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($message);
706
-
707
-        /** @var SplFixedArray $ctx */
708
-        $ctx = ParagonIE_Sodium_Core_BLAKE2b::init($k, $outlen);
709
-        ParagonIE_Sodium_Core_BLAKE2b::update($ctx, $in, $in->count());
710
-
711
-        /** @var SplFixedArray $out */
712
-        $out = new SplFixedArray($outlen);
713
-        $out = ParagonIE_Sodium_Core_BLAKE2b::finish($ctx, $out);
714
-
715
-        /** @var array<int, int> */
716
-        $outArray = $out->toArray();
717
-        return ParagonIE_Sodium_Core_Util::intArrayToString($outArray);
718
-    }
719
-
720
-    /**
721
-     * Finalize a BLAKE2b hashing context, returning the hash.
722
-     *
723
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
724
-     *
725
-     * @param string $ctx
726
-     * @param int $outlen
727
-     * @return string
728
-     * @throws SodiumException
729
-     * @throws TypeError
730
-     */
731
-    public static function generichash_final($ctx, $outlen = 32)
732
-    {
733
-        if (!is_string($ctx)) {
734
-            throw new TypeError('Context must be a string');
735
-        }
736
-        $out = new SplFixedArray($outlen);
737
-
738
-        /** @var SplFixedArray $context */
739
-        $context = ParagonIE_Sodium_Core_BLAKE2b::stringToContext($ctx);
740
-
741
-        /** @var SplFixedArray $out */
742
-        $out = ParagonIE_Sodium_Core_BLAKE2b::finish($context, $out);
743
-
744
-        /** @var array<int, int> */
745
-        $outArray = $out->toArray();
746
-        return ParagonIE_Sodium_Core_Util::intArrayToString($outArray);
747
-    }
748
-
749
-    /**
750
-     * Initialize a hashing context for BLAKE2b.
751
-     *
752
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
753
-     *
754
-     * @param string $key
755
-     * @param int $outputLength
756
-     * @return string
757
-     * @throws RangeException
758
-     * @throws SodiumException
759
-     * @throws TypeError
760
-     */
761
-    public static function generichash_init($key = '', $outputLength = 32)
762
-    {
763
-        // This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
764
-        ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
765
-
766
-        $k = null;
767
-        if (!empty($key)) {
768
-            $k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($key);
769
-            if ($k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES) {
770
-                throw new RangeException('Invalid key size');
771
-            }
772
-        }
773
-
774
-        /** @var SplFixedArray $ctx */
775
-        $ctx = ParagonIE_Sodium_Core_BLAKE2b::init($k, $outputLength);
776
-
777
-        return ParagonIE_Sodium_Core_BLAKE2b::contextToString($ctx);
778
-    }
779
-
780
-    /**
781
-     * Initialize a hashing context for BLAKE2b.
782
-     *
783
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
784
-     *
785
-     * @param string $key
786
-     * @param int $outputLength
787
-     * @param string $salt
788
-     * @param string $personal
789
-     * @return string
790
-     * @throws RangeException
791
-     * @throws SodiumException
792
-     * @throws TypeError
793
-     */
794
-    public static function generichash_init_salt_personal(
795
-        $key = '',
796
-        $outputLength = 32,
797
-        $salt = '',
798
-        $personal = ''
799
-    ) {
800
-        // This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
801
-        ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
802
-
803
-        $k = null;
804
-        if (!empty($key)) {
805
-            $k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($key);
806
-            if ($k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES) {
807
-                throw new RangeException('Invalid key size');
808
-            }
809
-        }
810
-        if (!empty($salt)) {
811
-            $s = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($salt);
812
-        } else {
813
-            $s = null;
814
-        }
815
-        if (!empty($salt)) {
816
-            $p = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($personal);
817
-        } else {
818
-            $p = null;
819
-        }
820
-
821
-        /** @var SplFixedArray $ctx */
822
-        $ctx = ParagonIE_Sodium_Core_BLAKE2b::init($k, $outputLength, $s, $p);
823
-
824
-        return ParagonIE_Sodium_Core_BLAKE2b::contextToString($ctx);
825
-    }
826
-
827
-    /**
828
-     * Update a hashing context for BLAKE2b with $message
829
-     *
830
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
831
-     *
832
-     * @param string $ctx
833
-     * @param string $message
834
-     * @return string
835
-     * @throws SodiumException
836
-     * @throws TypeError
837
-     */
838
-    public static function generichash_update($ctx, $message)
839
-    {
840
-        // This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
841
-        ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
842
-
843
-        /** @var SplFixedArray $context */
844
-        $context = ParagonIE_Sodium_Core_BLAKE2b::stringToContext($ctx);
845
-
846
-        /** @var SplFixedArray $in */
847
-        $in = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($message);
848
-
849
-        ParagonIE_Sodium_Core_BLAKE2b::update($context, $in, $in->count());
850
-
851
-        return ParagonIE_Sodium_Core_BLAKE2b::contextToString($context);
852
-    }
853
-
854
-    /**
855
-     * Libsodium's crypto_kx().
856
-     *
857
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
858
-     *
859
-     * @param string $my_sk
860
-     * @param string $their_pk
861
-     * @param string $client_pk
862
-     * @param string $server_pk
863
-     * @return string
864
-     * @throws SodiumException
865
-     * @throws TypeError
866
-     */
867
-    public static function keyExchange($my_sk, $their_pk, $client_pk, $server_pk)
868
-    {
869
-        return ParagonIE_Sodium_Compat::crypto_generichash(
870
-            ParagonIE_Sodium_Compat::crypto_scalarmult($my_sk, $their_pk) .
871
-            $client_pk .
872
-            $server_pk
873
-        );
874
-    }
875
-
876
-    /**
877
-     * ECDH over Curve25519
878
-     *
879
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
880
-     *
881
-     * @param string $sKey
882
-     * @param string $pKey
883
-     * @return string
884
-     *
885
-     * @throws SodiumException
886
-     * @throws TypeError
887
-     */
888
-    public static function scalarmult($sKey, $pKey)
889
-    {
890
-        $q = ParagonIE_Sodium_Core_X25519::crypto_scalarmult_curve25519_ref10($sKey, $pKey);
891
-        self::scalarmult_throw_if_zero($q);
892
-        return $q;
893
-    }
894
-
895
-    /**
896
-     * ECDH over Curve25519, using the basepoint.
897
-     * Used to get a secret key from a public key.
898
-     *
899
-     * @param string $secret
900
-     * @return string
901
-     *
902
-     * @throws SodiumException
903
-     * @throws TypeError
904
-     */
905
-    public static function scalarmult_base($secret)
906
-    {
907
-        $q = ParagonIE_Sodium_Core_X25519::crypto_scalarmult_curve25519_ref10_base($secret);
908
-        self::scalarmult_throw_if_zero($q);
909
-        return $q;
910
-    }
911
-
912
-    /**
913
-     * This throws an Error if a zero public key was passed to the function.
914
-     *
915
-     * @param string $q
916
-     * @return void
917
-     * @throws SodiumException
918
-     * @throws TypeError
919
-     */
920
-    protected static function scalarmult_throw_if_zero($q)
921
-    {
922
-        $d = 0;
923
-        for ($i = 0; $i < self::box_curve25519xsalsa20poly1305_SECRETKEYBYTES; ++$i) {
924
-            $d |= ParagonIE_Sodium_Core_Util::chrToInt($q[$i]);
925
-        }
926
-
927
-        /* branch-free variant of === 0 */
928
-        if (-(1 & (($d - 1) >> 8))) {
929
-            throw new SodiumException('Zero public key is not allowed');
930
-        }
931
-    }
932
-
933
-    /**
934
-     * XSalsa20-Poly1305 authenticated symmetric-key encryption.
935
-     *
936
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
937
-     *
938
-     * @param string $plaintext
939
-     * @param string $nonce
940
-     * @param string $key
941
-     * @return string
942
-     * @throws SodiumException
943
-     * @throws TypeError
944
-     */
945
-    public static function secretbox($plaintext, $nonce, $key)
946
-    {
947
-        /** @var string $subkey */
948
-        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);
949
-
950
-        /** @var string $block0 */
951
-        $block0 = str_repeat("\x00", 32);
952
-
953
-        /** @var int $mlen - Length of the plaintext message */
954
-        $mlen = ParagonIE_Sodium_Core_Util::strlen($plaintext);
955
-        $mlen0 = $mlen;
956
-        if ($mlen0 > 64 - self::secretbox_xsalsa20poly1305_ZEROBYTES) {
957
-            $mlen0 = 64 - self::secretbox_xsalsa20poly1305_ZEROBYTES;
958
-        }
959
-        $block0 .= ParagonIE_Sodium_Core_Util::substr($plaintext, 0, $mlen0);
960
-
961
-        /** @var string $block0 */
962
-        $block0 = ParagonIE_Sodium_Core_Salsa20::salsa20_xor(
963
-            $block0,
964
-            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
965
-            $subkey
966
-        );
967
-
968
-        /** @var string $c */
969
-        $c = ParagonIE_Sodium_Core_Util::substr(
970
-            $block0,
971
-            self::secretbox_xsalsa20poly1305_ZEROBYTES
972
-        );
973
-        if ($mlen > $mlen0) {
974
-            $c .= ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
975
-                ParagonIE_Sodium_Core_Util::substr(
976
-                    $plaintext,
977
-                    self::secretbox_xsalsa20poly1305_ZEROBYTES
978
-                ),
979
-                ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
980
-                1,
981
-                $subkey
982
-            );
983
-        }
984
-        $state = new ParagonIE_Sodium_Core_Poly1305_State(
985
-            ParagonIE_Sodium_Core_Util::substr(
986
-                $block0,
987
-                0,
988
-                self::onetimeauth_poly1305_KEYBYTES
989
-            )
990
-        );
991
-        try {
992
-            ParagonIE_Sodium_Compat::memzero($block0);
993
-            ParagonIE_Sodium_Compat::memzero($subkey);
994
-        } catch (SodiumException $ex) {
995
-            $block0 = null;
996
-            $subkey = null;
997
-        }
998
-
999
-        $state->update($c);
1000
-
1001
-        /** @var string $c - MAC || ciphertext */
1002
-        $c = $state->finish() . $c;
1003
-        unset($state);
1004
-
1005
-        return $c;
1006
-    }
1007
-
1008
-    /**
1009
-     * Decrypt a ciphertext generated via secretbox().
1010
-     *
1011
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
1012
-     *
1013
-     * @param string $ciphertext
1014
-     * @param string $nonce
1015
-     * @param string $key
1016
-     * @return string
1017
-     * @throws SodiumException
1018
-     * @throws TypeError
1019
-     */
1020
-    public static function secretbox_open($ciphertext, $nonce, $key)
1021
-    {
1022
-        /** @var string $mac */
1023
-        $mac = ParagonIE_Sodium_Core_Util::substr(
1024
-            $ciphertext,
1025
-            0,
1026
-            self::secretbox_xsalsa20poly1305_MACBYTES
1027
-        );
1028
-
1029
-        /** @var string $c */
1030
-        $c = ParagonIE_Sodium_Core_Util::substr(
1031
-            $ciphertext,
1032
-            self::secretbox_xsalsa20poly1305_MACBYTES
1033
-        );
1034
-
1035
-        /** @var int $clen */
1036
-        $clen = ParagonIE_Sodium_Core_Util::strlen($c);
1037
-
1038
-        /** @var string $subkey */
1039
-        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);
1040
-
1041
-        /** @var string $block0 */
1042
-        $block0 = ParagonIE_Sodium_Core_Salsa20::salsa20(
1043
-            64,
1044
-            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
1045
-            $subkey
1046
-        );
1047
-        $verified = ParagonIE_Sodium_Core_Poly1305::onetimeauth_verify(
1048
-            $mac,
1049
-            $c,
1050
-            ParagonIE_Sodium_Core_Util::substr($block0, 0, 32)
1051
-        );
1052
-        if (!$verified) {
1053
-            try {
1054
-                ParagonIE_Sodium_Compat::memzero($subkey);
1055
-            } catch (SodiumException $ex) {
1056
-                $subkey = null;
1057
-            }
1058
-            throw new SodiumException('Invalid MAC');
1059
-        }
1060
-
1061
-        /** @var string $m - Decrypted message */
1062
-        $m = ParagonIE_Sodium_Core_Util::xorStrings(
1063
-            ParagonIE_Sodium_Core_Util::substr($block0, self::secretbox_xsalsa20poly1305_ZEROBYTES),
1064
-            ParagonIE_Sodium_Core_Util::substr($c, 0, self::secretbox_xsalsa20poly1305_ZEROBYTES)
1065
-        );
1066
-        if ($clen > self::secretbox_xsalsa20poly1305_ZEROBYTES) {
1067
-            // We had more than 1 block, so let's continue to decrypt the rest.
1068
-            $m .= ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
1069
-                ParagonIE_Sodium_Core_Util::substr(
1070
-                    $c,
1071
-                    self::secretbox_xsalsa20poly1305_ZEROBYTES
1072
-                ),
1073
-                ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
1074
-                1,
1075
-                (string) $subkey
1076
-            );
1077
-        }
1078
-        return $m;
1079
-    }
1080
-
1081
-    /**
1082
-     * XChaCha20-Poly1305 authenticated symmetric-key encryption.
1083
-     *
1084
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
1085
-     *
1086
-     * @param string $plaintext
1087
-     * @param string $nonce
1088
-     * @param string $key
1089
-     * @return string
1090
-     * @throws SodiumException
1091
-     * @throws TypeError
1092
-     */
1093
-    public static function secretbox_xchacha20poly1305($plaintext, $nonce, $key)
1094
-    {
1095
-        /** @var string $subkey */
1096
-        $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
1097
-            ParagonIE_Sodium_Core_Util::substr($nonce, 0, 16),
1098
-            $key
1099
-        );
1100
-        $nonceLast = ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);
1101
-
1102
-        /** @var string $block0 */
1103
-        $block0 = str_repeat("\x00", 32);
1104
-
1105
-        /** @var int $mlen - Length of the plaintext message */
1106
-        $mlen = ParagonIE_Sodium_Core_Util::strlen($plaintext);
1107
-        $mlen0 = $mlen;
1108
-        if ($mlen0 > 64 - self::secretbox_xchacha20poly1305_ZEROBYTES) {
1109
-            $mlen0 = 64 - self::secretbox_xchacha20poly1305_ZEROBYTES;
1110
-        }
1111
-        $block0 .= ParagonIE_Sodium_Core_Util::substr($plaintext, 0, $mlen0);
1112
-
1113
-        /** @var string $block0 */
1114
-        $block0 = ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
1115
-            $block0,
1116
-            $nonceLast,
1117
-            $subkey
1118
-        );
1119
-
1120
-        /** @var string $c */
1121
-        $c = ParagonIE_Sodium_Core_Util::substr(
1122
-            $block0,
1123
-            self::secretbox_xchacha20poly1305_ZEROBYTES
1124
-        );
1125
-        if ($mlen > $mlen0) {
1126
-            $c .= ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
1127
-                ParagonIE_Sodium_Core_Util::substr(
1128
-                    $plaintext,
1129
-                    self::secretbox_xchacha20poly1305_ZEROBYTES
1130
-                ),
1131
-                $nonceLast,
1132
-                $subkey,
1133
-                ParagonIE_Sodium_Core_Util::store64_le(1)
1134
-            );
1135
-        }
1136
-        $state = new ParagonIE_Sodium_Core_Poly1305_State(
1137
-            ParagonIE_Sodium_Core_Util::substr(
1138
-                $block0,
1139
-                0,
1140
-                self::onetimeauth_poly1305_KEYBYTES
1141
-            )
1142
-        );
1143
-        try {
1144
-            ParagonIE_Sodium_Compat::memzero($block0);
1145
-            ParagonIE_Sodium_Compat::memzero($subkey);
1146
-        } catch (SodiumException $ex) {
1147
-            $block0 = null;
1148
-            $subkey = null;
1149
-        }
1150
-
1151
-        $state->update($c);
1152
-
1153
-        /** @var string $c - MAC || ciphertext */
1154
-        $c = $state->finish() . $c;
1155
-        unset($state);
1156
-
1157
-        return $c;
1158
-    }
1159
-
1160
-    /**
1161
-     * Decrypt a ciphertext generated via secretbox_xchacha20poly1305().
1162
-     *
1163
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
1164
-     *
1165
-     * @param string $ciphertext
1166
-     * @param string $nonce
1167
-     * @param string $key
1168
-     * @return string
1169
-     * @throws SodiumException
1170
-     * @throws TypeError
1171
-     */
1172
-    public static function secretbox_xchacha20poly1305_open($ciphertext, $nonce, $key)
1173
-    {
1174
-        /** @var string $mac */
1175
-        $mac = ParagonIE_Sodium_Core_Util::substr(
1176
-            $ciphertext,
1177
-            0,
1178
-            self::secretbox_xchacha20poly1305_MACBYTES
1179
-        );
1180
-
1181
-        /** @var string $c */
1182
-        $c = ParagonIE_Sodium_Core_Util::substr(
1183
-            $ciphertext,
1184
-            self::secretbox_xchacha20poly1305_MACBYTES
1185
-        );
1186
-
1187
-        /** @var int $clen */
1188
-        $clen = ParagonIE_Sodium_Core_Util::strlen($c);
1189
-
1190
-        /** @var string $subkey */
1191
-        $subkey = ParagonIE_Sodium_Core_HChaCha20::hchacha20($nonce, $key);
1192
-
1193
-        /** @var string $block0 */
1194
-        $block0 = ParagonIE_Sodium_Core_ChaCha20::stream(
1195
-            64,
1196
-            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
1197
-            $subkey
1198
-        );
1199
-        $verified = ParagonIE_Sodium_Core_Poly1305::onetimeauth_verify(
1200
-            $mac,
1201
-            $c,
1202
-            ParagonIE_Sodium_Core_Util::substr($block0, 0, 32)
1203
-        );
1204
-
1205
-        if (!$verified) {
1206
-            try {
1207
-                ParagonIE_Sodium_Compat::memzero($subkey);
1208
-            } catch (SodiumException $ex) {
1209
-                $subkey = null;
1210
-            }
1211
-            throw new SodiumException('Invalid MAC');
1212
-        }
1213
-
1214
-        /** @var string $m - Decrypted message */
1215
-        $m = ParagonIE_Sodium_Core_Util::xorStrings(
1216
-            ParagonIE_Sodium_Core_Util::substr($block0, self::secretbox_xchacha20poly1305_ZEROBYTES),
1217
-            ParagonIE_Sodium_Core_Util::substr($c, 0, self::secretbox_xchacha20poly1305_ZEROBYTES)
1218
-        );
1219
-
1220
-        if ($clen > self::secretbox_xchacha20poly1305_ZEROBYTES) {
1221
-            // We had more than 1 block, so let's continue to decrypt the rest.
1222
-            $m .= ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
1223
-                ParagonIE_Sodium_Core_Util::substr(
1224
-                    $c,
1225
-                    self::secretbox_xchacha20poly1305_ZEROBYTES
1226
-                ),
1227
-                ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
1228
-                (string) $subkey,
1229
-                ParagonIE_Sodium_Core_Util::store64_le(1)
1230
-            );
1231
-        }
1232
-        return $m;
1233
-    }
1234
-
1235
-    /**
1236
-     * @param string $key
1237
-     * @return array<int, string> Returns a state and a header.
1238
-     * @throws Exception
1239
-     * @throws SodiumException
1240
-     */
1241
-    public static function secretstream_xchacha20poly1305_init_push($key)
1242
-    {
1243
-        # randombytes_buf(out, crypto_secretstream_xchacha20poly1305_HEADERBYTES);
1244
-        $out = random_bytes(24);
1245
-
1246
-        # crypto_core_hchacha20(state->k, out, k, NULL);
1247
-        $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20($out, $key);
1248
-        $state = new ParagonIE_Sodium_Core_SecretStream_State(
1249
-            $subkey,
1250
-            ParagonIE_Sodium_Core_Util::substr($out, 16, 8) . str_repeat("\0", 4)
1251
-        );
1252
-
1253
-        # _crypto_secretstream_xchacha20poly1305_counter_reset(state);
1254
-        $state->counterReset();
1255
-
1256
-        # memcpy(STATE_INONCE(state), out + crypto_core_hchacha20_INPUTBYTES,
1257
-        #        crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1258
-        # memset(state->_pad, 0, sizeof state->_pad);
1259
-        return array(
1260
-            $state->toString(),
1261
-            $out
1262
-        );
1263
-    }
1264
-
1265
-    /**
1266
-     * @param string $key
1267
-     * @param string $header
1268
-     * @return string Returns a state.
1269
-     * @throws Exception
1270
-     */
1271
-    public static function secretstream_xchacha20poly1305_init_pull($key, $header)
1272
-    {
1273
-        # crypto_core_hchacha20(state->k, in, k, NULL);
1274
-        $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
1275
-            ParagonIE_Sodium_Core_Util::substr($header, 0, 16),
1276
-            $key
1277
-        );
1278
-        $state = new ParagonIE_Sodium_Core_SecretStream_State(
1279
-            $subkey,
1280
-            ParagonIE_Sodium_Core_Util::substr($header, 16)
1281
-        );
1282
-        $state->counterReset();
1283
-        # memcpy(STATE_INONCE(state), in + crypto_core_hchacha20_INPUTBYTES,
1284
-        #     crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1285
-        # memset(state->_pad, 0, sizeof state->_pad);
1286
-        # return 0;
1287
-        return $state->toString();
1288
-    }
1289
-
1290
-    /**
1291
-     * @param string $state
1292
-     * @param string $msg
1293
-     * @param string $aad
1294
-     * @param int $tag
1295
-     * @return string
1296
-     * @throws SodiumException
1297
-     */
1298
-    public static function secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0)
1299
-    {
1300
-        $st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
1301
-        # crypto_onetimeauth_poly1305_state poly1305_state;
1302
-        # unsigned char                     block[64U];
1303
-        # unsigned char                     slen[8U];
1304
-        # unsigned char                    *c;
1305
-        # unsigned char                    *mac;
1306
-
1307
-        $msglen = ParagonIE_Sodium_Core_Util::strlen($msg);
1308
-        $aadlen = ParagonIE_Sodium_Core_Util::strlen($aad);
1309
-
1310
-        if ((($msglen + 63) >> 6) > 0xfffffffe) {
1311
-            throw new SodiumException(
1312
-                'message cannot be larger than SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX bytes'
1313
-            );
1314
-        }
1315
-
1316
-        # if (outlen_p != NULL) {
1317
-        #     *outlen_p = 0U;
1318
-        # }
1319
-        # if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) {
1320
-        #     sodium_misuse();
1321
-        # }
1322
-
1323
-        # crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k);
1324
-        # crypto_onetimeauth_poly1305_init(&poly1305_state, block);
1325
-        # sodium_memzero(block, sizeof block);
1326
-        $auth = new ParagonIE_Sodium_Core_Poly1305_State(
1327
-            ParagonIE_Sodium_Core_ChaCha20::ietfStream(32, $st->getCombinedNonce(), $st->getKey())
1328
-        );
1329
-
1330
-        # crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen);
1331
-        $auth->update($aad);
1332
-
1333
-        # crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0,
1334
-        #     (0x10 - adlen) & 0xf);
1335
-        $auth->update(str_repeat("\0", ((0x10 - $aadlen) & 0xf)));
1336
-
1337
-        # memset(block, 0, sizeof block);
1338
-        # block[0] = tag;
1339
-        # crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block,
1340
-        #                                    state->nonce, 1U, state->k);
1341
-        $block = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1342
-            ParagonIE_Sodium_Core_Util::intToChr($tag) . str_repeat("\0", 63),
1343
-            $st->getCombinedNonce(),
1344
-            $st->getKey(),
1345
-            ParagonIE_Sodium_Core_Util::store64_le(1)
1346
-        );
1347
-
1348
-        # crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block);
1349
-        $auth->update($block);
1350
-
1351
-        # out[0] = block[0];
1352
-        $out = $block[0];
1353
-        # c = out + (sizeof tag);
1354
-        # crypto_stream_chacha20_ietf_xor_ic(c, m, mlen, state->nonce, 2U, state->k);
1355
-        $cipher = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1356
-            $msg,
1357
-            $st->getCombinedNonce(),
1358
-            $st->getKey(),
1359
-            ParagonIE_Sodium_Core_Util::store64_le(2)
1360
-        );
1361
-
1362
-        # crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen);
1363
-        $auth->update($cipher);
1364
-
1365
-        $out .= $cipher;
1366
-        unset($cipher);
1367
-
1368
-        # crypto_onetimeauth_poly1305_update
1369
-        # (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf);
1370
-        $auth->update(str_repeat("\0", ((0x10 - 64 + $msglen) & 0xf)));
1371
-
1372
-        # STORE64_LE(slen, (uint64_t) adlen);
1373
-        $slen = ParagonIE_Sodium_Core_Util::store64_le($aadlen);
1374
-
1375
-        # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1376
-        $auth->update($slen);
1377
-
1378
-        # STORE64_LE(slen, (sizeof block) + mlen);
1379
-        $slen = ParagonIE_Sodium_Core_Util::store64_le(64 + $msglen);
1380
-
1381
-        # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1382
-        $auth->update($slen);
1383
-
1384
-        # mac = c + mlen;
1385
-        # crypto_onetimeauth_poly1305_final(&poly1305_state, mac);
1386
-        $mac = $auth->finish();
1387
-        $out .= $mac;
1388
-
1389
-        # sodium_memzero(&poly1305_state, sizeof poly1305_state);
1390
-        unset($auth);
1391
-
1392
-
1393
-        # XOR_BUF(STATE_INONCE(state), mac,
1394
-        #     crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1395
-        $st->xorNonce($mac);
1396
-
1397
-        # sodium_increment(STATE_COUNTER(state),
1398
-        #     crypto_secretstream_xchacha20poly1305_COUNTERBYTES);
1399
-        $st->incrementCounter();
1400
-        // Overwrite by reference:
1401
-        $state = $st->toString();
1402
-
1403
-        /** @var bool $rekey */
1404
-        $rekey = ($tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY) !== 0;
1405
-        # if ((tag & crypto_secretstream_xchacha20poly1305_TAG_REKEY) != 0 ||
1406
-        #     sodium_is_zero(STATE_COUNTER(state),
1407
-        #         crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) {
1408
-        #     crypto_secretstream_xchacha20poly1305_rekey(state);
1409
-        # }
1410
-        if ($rekey || $st->needsRekey()) {
1411
-            // DO REKEY
1412
-            self::secretstream_xchacha20poly1305_rekey($state);
1413
-        }
1414
-        # if (outlen_p != NULL) {
1415
-        #     *outlen_p = crypto_secretstream_xchacha20poly1305_ABYTES + mlen;
1416
-        # }
1417
-        return $out;
1418
-    }
1419
-
1420
-    /**
1421
-     * @param string $state
1422
-     * @param string $cipher
1423
-     * @param string $aad
1424
-     * @return bool|array{0: string, 1: int}
1425
-     * @throws SodiumException
1426
-     */
1427
-    public static function secretstream_xchacha20poly1305_pull(&$state, $cipher, $aad = '')
1428
-    {
1429
-        $st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
1430
-
1431
-        $cipherlen = ParagonIE_Sodium_Core_Util::strlen($cipher);
1432
-        #     mlen = inlen - crypto_secretstream_xchacha20poly1305_ABYTES;
1433
-        $msglen = $cipherlen - ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES;
1434
-        $aadlen = ParagonIE_Sodium_Core_Util::strlen($aad);
1435
-
1436
-        #     if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) {
1437
-        #         sodium_misuse();
1438
-        #     }
1439
-        if ((($msglen + 63) >> 6) > 0xfffffffe) {
1440
-            throw new SodiumException(
1441
-                'message cannot be larger than SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX bytes'
1442
-            );
1443
-        }
1444
-
1445
-        #     crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k);
1446
-        #     crypto_onetimeauth_poly1305_init(&poly1305_state, block);
1447
-        #     sodium_memzero(block, sizeof block);
1448
-        $auth = new ParagonIE_Sodium_Core_Poly1305_State(
1449
-            ParagonIE_Sodium_Core_ChaCha20::ietfStream(32, $st->getCombinedNonce(), $st->getKey())
1450
-        );
1451
-
1452
-        #     crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen);
1453
-        $auth->update($aad);
1454
-
1455
-        #     crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0,
1456
-        #         (0x10 - adlen) & 0xf);
1457
-        $auth->update(str_repeat("\0", ((0x10 - $aadlen) & 0xf)));
1458
-
1459
-
1460
-        #     memset(block, 0, sizeof block);
1461
-        #     block[0] = in[0];
1462
-        #     crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block,
1463
-        #                                        state->nonce, 1U, state->k);
1464
-        $block = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1465
-            $cipher[0] . str_repeat("\0", 63),
1466
-            $st->getCombinedNonce(),
1467
-            $st->getKey(),
1468
-            ParagonIE_Sodium_Core_Util::store64_le(1)
1469
-        );
1470
-        #     tag = block[0];
1471
-        #     block[0] = in[0];
1472
-        #     crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block);
1473
-        $tag = ParagonIE_Sodium_Core_Util::chrToInt($block[0]);
1474
-        $block[0] = $cipher[0];
1475
-        $auth->update($block);
1476
-
1477
-
1478
-        #     c = in + (sizeof tag);
1479
-        #     crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen);
1480
-        $auth->update(ParagonIE_Sodium_Core_Util::substr($cipher, 1, $msglen));
1481
-
1482
-        #     crypto_onetimeauth_poly1305_update
1483
-        #     (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf);
1484
-        $auth->update(str_repeat("\0", ((0x10 - 64 + $msglen) & 0xf)));
1485
-
1486
-        #     STORE64_LE(slen, (uint64_t) adlen);
1487
-        #     crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1488
-        $slen = ParagonIE_Sodium_Core_Util::store64_le($aadlen);
1489
-        $auth->update($slen);
1490
-
1491
-        #     STORE64_LE(slen, (sizeof block) + mlen);
1492
-        #     crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1493
-        $slen = ParagonIE_Sodium_Core_Util::store64_le(64 + $msglen);
1494
-        $auth->update($slen);
1495
-
1496
-        #     crypto_onetimeauth_poly1305_final(&poly1305_state, mac);
1497
-        #     sodium_memzero(&poly1305_state, sizeof poly1305_state);
1498
-        $mac = $auth->finish();
1499
-
1500
-        #     stored_mac = c + mlen;
1501
-        #     if (sodium_memcmp(mac, stored_mac, sizeof mac) != 0) {
1502
-        #     sodium_memzero(mac, sizeof mac);
1503
-        #         return -1;
1504
-        #     }
1505
-
1506
-        $stored = ParagonIE_Sodium_Core_Util::substr($cipher, $msglen + 1, 16);
1507
-        if (!ParagonIE_Sodium_Core_Util::hashEquals($mac, $stored)) {
1508
-            return false;
1509
-        }
1510
-
1511
-        #     crypto_stream_chacha20_ietf_xor_ic(m, c, mlen, state->nonce, 2U, state->k);
1512
-        $out = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1513
-            ParagonIE_Sodium_Core_Util::substr($cipher, 1, $msglen),
1514
-            $st->getCombinedNonce(),
1515
-            $st->getKey(),
1516
-            ParagonIE_Sodium_Core_Util::store64_le(2)
1517
-        );
1518
-
1519
-        #     XOR_BUF(STATE_INONCE(state), mac,
1520
-        #         crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1521
-        $st->xorNonce($mac);
1522
-
1523
-        #     sodium_increment(STATE_COUNTER(state),
1524
-        #         crypto_secretstream_xchacha20poly1305_COUNTERBYTES);
1525
-        $st->incrementCounter();
1526
-
1527
-        #     if ((tag & crypto_secretstream_xchacha20poly1305_TAG_REKEY) != 0 ||
1528
-        #         sodium_is_zero(STATE_COUNTER(state),
1529
-        #             crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) {
1530
-        #         crypto_secretstream_xchacha20poly1305_rekey(state);
1531
-        #     }
1532
-
1533
-        // Overwrite by reference:
1534
-        $state = $st->toString();
1535
-
1536
-        /** @var bool $rekey */
1537
-        $rekey = ($tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY) !== 0;
1538
-        if ($rekey || $st->needsRekey()) {
1539
-            // DO REKEY
1540
-            self::secretstream_xchacha20poly1305_rekey($state);
1541
-        }
1542
-        return array($out, $tag);
1543
-    }
1544
-
1545
-    /**
1546
-     * @param string $state
1547
-     * @return void
1548
-     * @throws SodiumException
1549
-     */
1550
-    public static function secretstream_xchacha20poly1305_rekey(&$state)
1551
-    {
1552
-        $st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
1553
-        # unsigned char new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES +
1554
-        # crypto_secretstream_xchacha20poly1305_INONCEBYTES];
1555
-        # size_t        i;
1556
-        # for (i = 0U; i < crypto_stream_chacha20_ietf_KEYBYTES; i++) {
1557
-        #     new_key_and_inonce[i] = state->k[i];
1558
-        # }
1559
-        $new_key_and_inonce = $st->getKey();
1560
-
1561
-        # for (i = 0U; i < crypto_secretstream_xchacha20poly1305_INONCEBYTES; i++) {
1562
-        #     new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + i] =
1563
-        #         STATE_INONCE(state)[i];
1564
-        # }
1565
-        $new_key_and_inonce .= ParagonIE_Sodium_Core_Util::substR($st->getNonce(), 0, 8);
1566
-
1567
-        # crypto_stream_chacha20_ietf_xor(new_key_and_inonce, new_key_and_inonce,
1568
-        #                                 sizeof new_key_and_inonce,
1569
-        #                                 state->nonce, state->k);
1570
-
1571
-        $st->rekey(ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1572
-            $new_key_and_inonce,
1573
-            $st->getCombinedNonce(),
1574
-            $st->getKey(),
1575
-            ParagonIE_Sodium_Core_Util::store64_le(0)
1576
-        ));
1577
-
1578
-        # for (i = 0U; i < crypto_stream_chacha20_ietf_KEYBYTES; i++) {
1579
-        #     state->k[i] = new_key_and_inonce[i];
1580
-        # }
1581
-        # for (i = 0U; i < crypto_secretstream_xchacha20poly1305_INONCEBYTES; i++) {
1582
-        #     STATE_INONCE(state)[i] =
1583
-        #          new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + i];
1584
-        # }
1585
-        # _crypto_secretstream_xchacha20poly1305_counter_reset(state);
1586
-        $st->counterReset();
1587
-
1588
-        $state = $st->toString();
1589
-    }
1590
-
1591
-    /**
1592
-     * Detached Ed25519 signature.
1593
-     *
1594
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
1595
-     *
1596
-     * @param string $message
1597
-     * @param string $sk
1598
-     * @return string
1599
-     * @throws SodiumException
1600
-     * @throws TypeError
1601
-     */
1602
-    public static function sign_detached($message, $sk)
1603
-    {
1604
-        return ParagonIE_Sodium_Core_Ed25519::sign_detached($message, $sk);
1605
-    }
1606
-
1607
-    /**
1608
-     * Attached Ed25519 signature. (Returns a signed message.)
1609
-     *
1610
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
1611
-     *
1612
-     * @param string $message
1613
-     * @param string $sk
1614
-     * @return string
1615
-     * @throws SodiumException
1616
-     * @throws TypeError
1617
-     */
1618
-    public static function sign($message, $sk)
1619
-    {
1620
-        return ParagonIE_Sodium_Core_Ed25519::sign($message, $sk);
1621
-    }
1622
-
1623
-    /**
1624
-     * Opens a signed message. If valid, returns the message.
1625
-     *
1626
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
1627
-     *
1628
-     * @param string $signedMessage
1629
-     * @param string $pk
1630
-     * @return string
1631
-     * @throws SodiumException
1632
-     * @throws TypeError
1633
-     */
1634
-    public static function sign_open($signedMessage, $pk)
1635
-    {
1636
-        return ParagonIE_Sodium_Core_Ed25519::sign_open($signedMessage, $pk);
1637
-    }
1638
-
1639
-    /**
1640
-     * Verify a detached signature of a given message and public key.
1641
-     *
1642
-     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
1643
-     *
1644
-     * @param string $signature
1645
-     * @param string $message
1646
-     * @param string $pk
1647
-     * @return bool
1648
-     * @throws SodiumException
1649
-     * @throws TypeError
1650
-     */
1651
-    public static function sign_verify_detached($signature, $message, $pk)
1652
-    {
1653
-        return ParagonIE_Sodium_Core_Ed25519::verify_detached($signature, $message, $pk);
1654
-    }
17
+	const aead_chacha20poly1305_KEYBYTES = 32;
18
+	const aead_chacha20poly1305_NSECBYTES = 0;
19
+	const aead_chacha20poly1305_NPUBBYTES = 8;
20
+	const aead_chacha20poly1305_ABYTES = 16;
21
+
22
+	const aead_chacha20poly1305_IETF_KEYBYTES = 32;
23
+	const aead_chacha20poly1305_IETF_NSECBYTES = 0;
24
+	const aead_chacha20poly1305_IETF_NPUBBYTES = 12;
25
+	const aead_chacha20poly1305_IETF_ABYTES = 16;
26
+
27
+	const aead_xchacha20poly1305_IETF_KEYBYTES = 32;
28
+	const aead_xchacha20poly1305_IETF_NSECBYTES = 0;
29
+	const aead_xchacha20poly1305_IETF_NPUBBYTES = 24;
30
+	const aead_xchacha20poly1305_IETF_ABYTES = 16;
31
+
32
+	const box_curve25519xsalsa20poly1305_SEEDBYTES = 32;
33
+	const box_curve25519xsalsa20poly1305_PUBLICKEYBYTES = 32;
34
+	const box_curve25519xsalsa20poly1305_SECRETKEYBYTES = 32;
35
+	const box_curve25519xsalsa20poly1305_BEFORENMBYTES = 32;
36
+	const box_curve25519xsalsa20poly1305_NONCEBYTES = 24;
37
+	const box_curve25519xsalsa20poly1305_MACBYTES = 16;
38
+	const box_curve25519xsalsa20poly1305_BOXZEROBYTES = 16;
39
+	const box_curve25519xsalsa20poly1305_ZEROBYTES = 32;
40
+
41
+	const onetimeauth_poly1305_BYTES = 16;
42
+	const onetimeauth_poly1305_KEYBYTES = 32;
43
+
44
+	const secretbox_xsalsa20poly1305_KEYBYTES = 32;
45
+	const secretbox_xsalsa20poly1305_NONCEBYTES = 24;
46
+	const secretbox_xsalsa20poly1305_MACBYTES = 16;
47
+	const secretbox_xsalsa20poly1305_BOXZEROBYTES = 16;
48
+	const secretbox_xsalsa20poly1305_ZEROBYTES = 32;
49
+
50
+	const secretbox_xchacha20poly1305_KEYBYTES = 32;
51
+	const secretbox_xchacha20poly1305_NONCEBYTES = 24;
52
+	const secretbox_xchacha20poly1305_MACBYTES = 16;
53
+	const secretbox_xchacha20poly1305_BOXZEROBYTES = 16;
54
+	const secretbox_xchacha20poly1305_ZEROBYTES = 32;
55
+
56
+	const stream_salsa20_KEYBYTES = 32;
57
+
58
+	/**
59
+	 * AEAD Decryption with ChaCha20-Poly1305
60
+	 *
61
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
62
+	 *
63
+	 * @param string $message
64
+	 * @param string $ad
65
+	 * @param string $nonce
66
+	 * @param string $key
67
+	 * @return string
68
+	 * @throws SodiumException
69
+	 * @throws TypeError
70
+	 */
71
+	public static function aead_chacha20poly1305_decrypt(
72
+		$message = '',
73
+		$ad = '',
74
+		$nonce = '',
75
+		$key = ''
76
+	) {
77
+		/** @var int $len - Length of message (ciphertext + MAC) */
78
+		$len = ParagonIE_Sodium_Core_Util::strlen($message);
79
+
80
+		/** @var int  $clen - Length of ciphertext */
81
+		$clen = $len - self::aead_chacha20poly1305_ABYTES;
82
+
83
+		/** @var int $adlen - Length of associated data */
84
+		$adlen = ParagonIE_Sodium_Core_Util::strlen($ad);
85
+
86
+		/** @var string $mac - Message authentication code */
87
+		$mac = ParagonIE_Sodium_Core_Util::substr(
88
+			$message,
89
+			$clen,
90
+			self::aead_chacha20poly1305_ABYTES
91
+		);
92
+
93
+		/** @var string $ciphertext - The encrypted message (sans MAC) */
94
+		$ciphertext = ParagonIE_Sodium_Core_Util::substr($message, 0, $clen);
95
+
96
+		/** @var string The first block of the chacha20 keystream, used as a poly1305 key */
97
+		$block0 = ParagonIE_Sodium_Core_ChaCha20::stream(
98
+			32,
99
+			$nonce,
100
+			$key
101
+		);
102
+
103
+		/* Recalculate the Poly1305 authentication tag (MAC): */
104
+		$state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
105
+		try {
106
+			ParagonIE_Sodium_Compat::memzero($block0);
107
+		} catch (SodiumException $ex) {
108
+			$block0 = null;
109
+		}
110
+		$state->update($ad);
111
+		$state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
112
+		$state->update($ciphertext);
113
+		$state->update(ParagonIE_Sodium_Core_Util::store64_le($clen));
114
+		$computed_mac = $state->finish();
115
+
116
+		/* Compare the given MAC with the recalculated MAC: */
117
+		if (!ParagonIE_Sodium_Core_Util::verify_16($computed_mac, $mac)) {
118
+			throw new SodiumException('Invalid MAC');
119
+		}
120
+
121
+		// Here, we know that the MAC is valid, so we decrypt and return the plaintext
122
+		return ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
123
+			$ciphertext,
124
+			$nonce,
125
+			$key,
126
+			ParagonIE_Sodium_Core_Util::store64_le(1)
127
+		);
128
+	}
129
+
130
+	/**
131
+	 * AEAD Encryption with ChaCha20-Poly1305
132
+	 *
133
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
134
+	 *
135
+	 * @param string $message
136
+	 * @param string $ad
137
+	 * @param string $nonce
138
+	 * @param string $key
139
+	 * @return string
140
+	 * @throws SodiumException
141
+	 * @throws TypeError
142
+	 */
143
+	public static function aead_chacha20poly1305_encrypt(
144
+		$message = '',
145
+		$ad = '',
146
+		$nonce = '',
147
+		$key = ''
148
+	) {
149
+		/** @var int $len - Length of the plaintext message */
150
+		$len = ParagonIE_Sodium_Core_Util::strlen($message);
151
+
152
+		/** @var int $adlen - Length of the associated data */
153
+		$adlen = ParagonIE_Sodium_Core_Util::strlen($ad);
154
+
155
+		/** @var string The first block of the chacha20 keystream, used as a poly1305 key */
156
+		$block0 = ParagonIE_Sodium_Core_ChaCha20::stream(
157
+			32,
158
+			$nonce,
159
+			$key
160
+		);
161
+		$state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
162
+		try {
163
+			ParagonIE_Sodium_Compat::memzero($block0);
164
+		} catch (SodiumException $ex) {
165
+			$block0 = null;
166
+		}
167
+
168
+		/** @var string $ciphertext - Raw encrypted data */
169
+		$ciphertext = ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
170
+			$message,
171
+			$nonce,
172
+			$key,
173
+			ParagonIE_Sodium_Core_Util::store64_le(1)
174
+		);
175
+
176
+		$state->update($ad);
177
+		$state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
178
+		$state->update($ciphertext);
179
+		$state->update(ParagonIE_Sodium_Core_Util::store64_le($len));
180
+		return $ciphertext . $state->finish();
181
+	}
182
+
183
+	/**
184
+	 * AEAD Decryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
185
+	 *
186
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
187
+	 *
188
+	 * @param string $message
189
+	 * @param string $ad
190
+	 * @param string $nonce
191
+	 * @param string $key
192
+	 * @return string
193
+	 * @throws SodiumException
194
+	 * @throws TypeError
195
+	 */
196
+	public static function aead_chacha20poly1305_ietf_decrypt(
197
+		$message = '',
198
+		$ad = '',
199
+		$nonce = '',
200
+		$key = ''
201
+	) {
202
+		/** @var int $adlen - Length of associated data */
203
+		$adlen = ParagonIE_Sodium_Core_Util::strlen($ad);
204
+
205
+		/** @var int $len - Length of message (ciphertext + MAC) */
206
+		$len = ParagonIE_Sodium_Core_Util::strlen($message);
207
+
208
+		/** @var int  $clen - Length of ciphertext */
209
+		$clen = $len - self::aead_chacha20poly1305_IETF_ABYTES;
210
+
211
+		/** @var string The first block of the chacha20 keystream, used as a poly1305 key */
212
+		$block0 = ParagonIE_Sodium_Core_ChaCha20::ietfStream(
213
+			32,
214
+			$nonce,
215
+			$key
216
+		);
217
+
218
+		/** @var string $mac - Message authentication code */
219
+		$mac = ParagonIE_Sodium_Core_Util::substr(
220
+			$message,
221
+			$len - self::aead_chacha20poly1305_IETF_ABYTES,
222
+			self::aead_chacha20poly1305_IETF_ABYTES
223
+		);
224
+
225
+		/** @var string $ciphertext - The encrypted message (sans MAC) */
226
+		$ciphertext = ParagonIE_Sodium_Core_Util::substr(
227
+			$message,
228
+			0,
229
+			$len - self::aead_chacha20poly1305_IETF_ABYTES
230
+		);
231
+
232
+		/* Recalculate the Poly1305 authentication tag (MAC): */
233
+		$state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
234
+		try {
235
+			ParagonIE_Sodium_Compat::memzero($block0);
236
+		} catch (SodiumException $ex) {
237
+			$block0 = null;
238
+		}
239
+		$state->update($ad);
240
+		$state->update(str_repeat("\x00", ((0x10 - $adlen) & 0xf)));
241
+		$state->update($ciphertext);
242
+		$state->update(str_repeat("\x00", (0x10 - $clen) & 0xf));
243
+		$state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
244
+		$state->update(ParagonIE_Sodium_Core_Util::store64_le($clen));
245
+		$computed_mac = $state->finish();
246
+
247
+		/* Compare the given MAC with the recalculated MAC: */
248
+		if (!ParagonIE_Sodium_Core_Util::verify_16($computed_mac, $mac)) {
249
+			throw new SodiumException('Invalid MAC');
250
+		}
251
+
252
+		// Here, we know that the MAC is valid, so we decrypt and return the plaintext
253
+		return ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
254
+			$ciphertext,
255
+			$nonce,
256
+			$key,
257
+			ParagonIE_Sodium_Core_Util::store64_le(1)
258
+		);
259
+	}
260
+
261
+	/**
262
+	 * AEAD Encryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
263
+	 *
264
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
265
+	 *
266
+	 * @param string $message
267
+	 * @param string $ad
268
+	 * @param string $nonce
269
+	 * @param string $key
270
+	 * @return string
271
+	 * @throws SodiumException
272
+	 * @throws TypeError
273
+	 */
274
+	public static function aead_chacha20poly1305_ietf_encrypt(
275
+		$message = '',
276
+		$ad = '',
277
+		$nonce = '',
278
+		$key = ''
279
+	) {
280
+		/** @var int $len - Length of the plaintext message */
281
+		$len = ParagonIE_Sodium_Core_Util::strlen($message);
282
+
283
+		/** @var int $adlen - Length of the associated data */
284
+		$adlen = ParagonIE_Sodium_Core_Util::strlen($ad);
285
+
286
+		/** @var string The first block of the chacha20 keystream, used as a poly1305 key */
287
+		$block0 = ParagonIE_Sodium_Core_ChaCha20::ietfStream(
288
+			32,
289
+			$nonce,
290
+			$key
291
+		);
292
+		$state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
293
+		try {
294
+			ParagonIE_Sodium_Compat::memzero($block0);
295
+		} catch (SodiumException $ex) {
296
+			$block0 = null;
297
+		}
298
+
299
+		/** @var string $ciphertext - Raw encrypted data */
300
+		$ciphertext = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
301
+			$message,
302
+			$nonce,
303
+			$key,
304
+			ParagonIE_Sodium_Core_Util::store64_le(1)
305
+		);
306
+
307
+		$state->update($ad);
308
+		$state->update(str_repeat("\x00", ((0x10 - $adlen) & 0xf)));
309
+		$state->update($ciphertext);
310
+		$state->update(str_repeat("\x00", ((0x10 - $len) & 0xf)));
311
+		$state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
312
+		$state->update(ParagonIE_Sodium_Core_Util::store64_le($len));
313
+		return $ciphertext . $state->finish();
314
+	}
315
+
316
+	/**
317
+	 * AEAD Decryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
318
+	 *
319
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
320
+	 *
321
+	 * @param string $message
322
+	 * @param string $ad
323
+	 * @param string $nonce
324
+	 * @param string $key
325
+	 * @return string
326
+	 * @throws SodiumException
327
+	 * @throws TypeError
328
+	 */
329
+	public static function aead_xchacha20poly1305_ietf_decrypt(
330
+		$message = '',
331
+		$ad = '',
332
+		$nonce = '',
333
+		$key = ''
334
+	) {
335
+		$subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
336
+			ParagonIE_Sodium_Core_Util::substr($nonce, 0, 16),
337
+			$key
338
+		);
339
+		$nonceLast = "\x00\x00\x00\x00" .
340
+			ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);
341
+
342
+		return self::aead_chacha20poly1305_ietf_decrypt($message, $ad, $nonceLast, $subkey);
343
+	}
344
+
345
+	/**
346
+	 * AEAD Encryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
347
+	 *
348
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
349
+	 *
350
+	 * @param string $message
351
+	 * @param string $ad
352
+	 * @param string $nonce
353
+	 * @param string $key
354
+	 * @return string
355
+	 * @throws SodiumException
356
+	 * @throws TypeError
357
+	 */
358
+	public static function aead_xchacha20poly1305_ietf_encrypt(
359
+		$message = '',
360
+		$ad = '',
361
+		$nonce = '',
362
+		$key = ''
363
+	) {
364
+		$subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
365
+			ParagonIE_Sodium_Core_Util::substr($nonce, 0, 16),
366
+			$key
367
+		);
368
+		$nonceLast = "\x00\x00\x00\x00" .
369
+			ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);
370
+
371
+		return self::aead_chacha20poly1305_ietf_encrypt($message, $ad, $nonceLast, $subkey);
372
+	}
373
+
374
+	/**
375
+	 * HMAC-SHA-512-256 (a.k.a. the leftmost 256 bits of HMAC-SHA-512)
376
+	 *
377
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
378
+	 *
379
+	 * @param string $message
380
+	 * @param string $key
381
+	 * @return string
382
+	 * @throws TypeError
383
+	 */
384
+	public static function auth($message, $key)
385
+	{
386
+		return ParagonIE_Sodium_Core_Util::substr(
387
+			hash_hmac('sha512', $message, $key, true),
388
+			0,
389
+			32
390
+		);
391
+	}
392
+
393
+	/**
394
+	 * HMAC-SHA-512-256 validation. Constant-time via hash_equals().
395
+	 *
396
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
397
+	 *
398
+	 * @param string $mac
399
+	 * @param string $message
400
+	 * @param string $key
401
+	 * @return bool
402
+	 * @throws SodiumException
403
+	 * @throws TypeError
404
+	 */
405
+	public static function auth_verify($mac, $message, $key)
406
+	{
407
+		return ParagonIE_Sodium_Core_Util::hashEquals(
408
+			$mac,
409
+			self::auth($message, $key)
410
+		);
411
+	}
412
+
413
+	/**
414
+	 * X25519 key exchange followed by XSalsa20Poly1305 symmetric encryption
415
+	 *
416
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
417
+	 *
418
+	 * @param string $plaintext
419
+	 * @param string $nonce
420
+	 * @param string $keypair
421
+	 * @return string
422
+	 * @throws SodiumException
423
+	 * @throws TypeError
424
+	 */
425
+	public static function box($plaintext, $nonce, $keypair)
426
+	{
427
+		$c = self::secretbox(
428
+			$plaintext,
429
+			$nonce,
430
+			self::box_beforenm(
431
+				self::box_secretkey($keypair),
432
+				self::box_publickey($keypair)
433
+			)
434
+		);
435
+		return $c;
436
+	}
437
+
438
+	/**
439
+	 * X25519-XSalsa20-Poly1305 with one ephemeral X25519 keypair.
440
+	 *
441
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
442
+	 *
443
+	 * @param string $message
444
+	 * @param string $publicKey
445
+	 * @return string
446
+	 * @throws SodiumException
447
+	 * @throws TypeError
448
+	 */
449
+	public static function box_seal($message, $publicKey)
450
+	{
451
+		/** @var string $ephemeralKeypair */
452
+		$ephemeralKeypair = self::box_keypair();
453
+
454
+		/** @var string $ephemeralSK */
455
+		$ephemeralSK = self::box_secretkey($ephemeralKeypair);
456
+
457
+		/** @var string $ephemeralPK */
458
+		$ephemeralPK = self::box_publickey($ephemeralKeypair);
459
+
460
+		/** @var string $nonce */
461
+		$nonce = self::generichash(
462
+			$ephemeralPK . $publicKey,
463
+			'',
464
+			24
465
+		);
466
+
467
+		/** @var string $keypair - The combined keypair used in crypto_box() */
468
+		$keypair = self::box_keypair_from_secretkey_and_publickey($ephemeralSK, $publicKey);
469
+
470
+		/** @var string $ciphertext Ciphertext + MAC from crypto_box */
471
+		$ciphertext = self::box($message, $nonce, $keypair);
472
+		try {
473
+			ParagonIE_Sodium_Compat::memzero($ephemeralKeypair);
474
+			ParagonIE_Sodium_Compat::memzero($ephemeralSK);
475
+			ParagonIE_Sodium_Compat::memzero($nonce);
476
+		} catch (SodiumException $ex) {
477
+			$ephemeralKeypair = null;
478
+			$ephemeralSK = null;
479
+			$nonce = null;
480
+		}
481
+		return $ephemeralPK . $ciphertext;
482
+	}
483
+
484
+	/**
485
+	 * Opens a message encrypted via box_seal().
486
+	 *
487
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
488
+	 *
489
+	 * @param string $message
490
+	 * @param string $keypair
491
+	 * @return string
492
+	 * @throws SodiumException
493
+	 * @throws TypeError
494
+	 */
495
+	public static function box_seal_open($message, $keypair)
496
+	{
497
+		/** @var string $ephemeralPK */
498
+		$ephemeralPK = ParagonIE_Sodium_Core_Util::substr($message, 0, 32);
499
+
500
+		/** @var string $ciphertext (ciphertext + MAC) */
501
+		$ciphertext = ParagonIE_Sodium_Core_Util::substr($message, 32);
502
+
503
+		/** @var string $secretKey */
504
+		$secretKey = self::box_secretkey($keypair);
505
+
506
+		/** @var string $publicKey */
507
+		$publicKey = self::box_publickey($keypair);
508
+
509
+		/** @var string $nonce */
510
+		$nonce = self::generichash(
511
+			$ephemeralPK . $publicKey,
512
+			'',
513
+			24
514
+		);
515
+
516
+		/** @var string $keypair */
517
+		$keypair = self::box_keypair_from_secretkey_and_publickey($secretKey, $ephemeralPK);
518
+
519
+		/** @var string $m */
520
+		$m = self::box_open($ciphertext, $nonce, $keypair);
521
+		try {
522
+			ParagonIE_Sodium_Compat::memzero($secretKey);
523
+			ParagonIE_Sodium_Compat::memzero($ephemeralPK);
524
+			ParagonIE_Sodium_Compat::memzero($nonce);
525
+		} catch (SodiumException $ex) {
526
+			$secretKey = null;
527
+			$ephemeralPK = null;
528
+			$nonce = null;
529
+		}
530
+		return $m;
531
+	}
532
+
533
+	/**
534
+	 * Used by crypto_box() to get the crypto_secretbox() key.
535
+	 *
536
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
537
+	 *
538
+	 * @param string $sk
539
+	 * @param string $pk
540
+	 * @return string
541
+	 * @throws SodiumException
542
+	 * @throws TypeError
543
+	 */
544
+	public static function box_beforenm($sk, $pk)
545
+	{
546
+		return ParagonIE_Sodium_Core_HSalsa20::hsalsa20(
547
+			str_repeat("\x00", 16),
548
+			self::scalarmult($sk, $pk)
549
+		);
550
+	}
551
+
552
+	/**
553
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
554
+	 *
555
+	 * @return string
556
+	 * @throws Exception
557
+	 * @throws SodiumException
558
+	 * @throws TypeError
559
+	 */
560
+	public static function box_keypair()
561
+	{
562
+		$sKey = random_bytes(32);
563
+		$pKey = self::scalarmult_base($sKey);
564
+		return $sKey . $pKey;
565
+	}
566
+
567
+	/**
568
+	 * @param string $seed
569
+	 * @return string
570
+	 * @throws SodiumException
571
+	 * @throws TypeError
572
+	 */
573
+	public static function box_seed_keypair($seed)
574
+	{
575
+		$sKey = ParagonIE_Sodium_Core_Util::substr(
576
+			hash('sha512', $seed, true),
577
+			0,
578
+			32
579
+		);
580
+		$pKey = self::scalarmult_base($sKey);
581
+		return $sKey . $pKey;
582
+	}
583
+
584
+	/**
585
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
586
+	 *
587
+	 * @param string $sKey
588
+	 * @param string $pKey
589
+	 * @return string
590
+	 * @throws TypeError
591
+	 */
592
+	public static function box_keypair_from_secretkey_and_publickey($sKey, $pKey)
593
+	{
594
+		return ParagonIE_Sodium_Core_Util::substr($sKey, 0, 32) .
595
+			ParagonIE_Sodium_Core_Util::substr($pKey, 0, 32);
596
+	}
597
+
598
+	/**
599
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
600
+	 *
601
+	 * @param string $keypair
602
+	 * @return string
603
+	 * @throws RangeException
604
+	 * @throws TypeError
605
+	 */
606
+	public static function box_secretkey($keypair)
607
+	{
608
+		if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== 64) {
609
+			throw new RangeException(
610
+				'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES bytes long.'
611
+			);
612
+		}
613
+		return ParagonIE_Sodium_Core_Util::substr($keypair, 0, 32);
614
+	}
615
+
616
+	/**
617
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
618
+	 *
619
+	 * @param string $keypair
620
+	 * @return string
621
+	 * @throws RangeException
622
+	 * @throws TypeError
623
+	 */
624
+	public static function box_publickey($keypair)
625
+	{
626
+		if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
627
+			throw new RangeException(
628
+				'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES bytes long.'
629
+			);
630
+		}
631
+		return ParagonIE_Sodium_Core_Util::substr($keypair, 32, 32);
632
+	}
633
+
634
+	/**
635
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
636
+	 *
637
+	 * @param string $sKey
638
+	 * @return string
639
+	 * @throws RangeException
640
+	 * @throws SodiumException
641
+	 * @throws TypeError
642
+	 */
643
+	public static function box_publickey_from_secretkey($sKey)
644
+	{
645
+		if (ParagonIE_Sodium_Core_Util::strlen($sKey) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_SECRETKEYBYTES) {
646
+			throw new RangeException(
647
+				'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_SECRETKEYBYTES bytes long.'
648
+			);
649
+		}
650
+		return self::scalarmult_base($sKey);
651
+	}
652
+
653
+	/**
654
+	 * Decrypt a message encrypted with box().
655
+	 *
656
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
657
+	 *
658
+	 * @param string $ciphertext
659
+	 * @param string $nonce
660
+	 * @param string $keypair
661
+	 * @return string
662
+	 * @throws SodiumException
663
+	 * @throws TypeError
664
+	 */
665
+	public static function box_open($ciphertext, $nonce, $keypair)
666
+	{
667
+		return self::secretbox_open(
668
+			$ciphertext,
669
+			$nonce,
670
+			self::box_beforenm(
671
+				self::box_secretkey($keypair),
672
+				self::box_publickey($keypair)
673
+			)
674
+		);
675
+	}
676
+
677
+	/**
678
+	 * Calculate a BLAKE2b hash.
679
+	 *
680
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
681
+	 *
682
+	 * @param string $message
683
+	 * @param string|null $key
684
+	 * @param int $outlen
685
+	 * @return string
686
+	 * @throws RangeException
687
+	 * @throws SodiumException
688
+	 * @throws TypeError
689
+	 */
690
+	public static function generichash($message, $key = '', $outlen = 32)
691
+	{
692
+		// This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
693
+		ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
694
+
695
+		$k = null;
696
+		if (!empty($key)) {
697
+			/** @var SplFixedArray $k */
698
+			$k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($key);
699
+			if ($k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES) {
700
+				throw new RangeException('Invalid key size');
701
+			}
702
+		}
703
+
704
+		/** @var SplFixedArray $in */
705
+		$in = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($message);
706
+
707
+		/** @var SplFixedArray $ctx */
708
+		$ctx = ParagonIE_Sodium_Core_BLAKE2b::init($k, $outlen);
709
+		ParagonIE_Sodium_Core_BLAKE2b::update($ctx, $in, $in->count());
710
+
711
+		/** @var SplFixedArray $out */
712
+		$out = new SplFixedArray($outlen);
713
+		$out = ParagonIE_Sodium_Core_BLAKE2b::finish($ctx, $out);
714
+
715
+		/** @var array<int, int> */
716
+		$outArray = $out->toArray();
717
+		return ParagonIE_Sodium_Core_Util::intArrayToString($outArray);
718
+	}
719
+
720
+	/**
721
+	 * Finalize a BLAKE2b hashing context, returning the hash.
722
+	 *
723
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
724
+	 *
725
+	 * @param string $ctx
726
+	 * @param int $outlen
727
+	 * @return string
728
+	 * @throws SodiumException
729
+	 * @throws TypeError
730
+	 */
731
+	public static function generichash_final($ctx, $outlen = 32)
732
+	{
733
+		if (!is_string($ctx)) {
734
+			throw new TypeError('Context must be a string');
735
+		}
736
+		$out = new SplFixedArray($outlen);
737
+
738
+		/** @var SplFixedArray $context */
739
+		$context = ParagonIE_Sodium_Core_BLAKE2b::stringToContext($ctx);
740
+
741
+		/** @var SplFixedArray $out */
742
+		$out = ParagonIE_Sodium_Core_BLAKE2b::finish($context, $out);
743
+
744
+		/** @var array<int, int> */
745
+		$outArray = $out->toArray();
746
+		return ParagonIE_Sodium_Core_Util::intArrayToString($outArray);
747
+	}
748
+
749
+	/**
750
+	 * Initialize a hashing context for BLAKE2b.
751
+	 *
752
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
753
+	 *
754
+	 * @param string $key
755
+	 * @param int $outputLength
756
+	 * @return string
757
+	 * @throws RangeException
758
+	 * @throws SodiumException
759
+	 * @throws TypeError
760
+	 */
761
+	public static function generichash_init($key = '', $outputLength = 32)
762
+	{
763
+		// This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
764
+		ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
765
+
766
+		$k = null;
767
+		if (!empty($key)) {
768
+			$k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($key);
769
+			if ($k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES) {
770
+				throw new RangeException('Invalid key size');
771
+			}
772
+		}
773
+
774
+		/** @var SplFixedArray $ctx */
775
+		$ctx = ParagonIE_Sodium_Core_BLAKE2b::init($k, $outputLength);
776
+
777
+		return ParagonIE_Sodium_Core_BLAKE2b::contextToString($ctx);
778
+	}
779
+
780
+	/**
781
+	 * Initialize a hashing context for BLAKE2b.
782
+	 *
783
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
784
+	 *
785
+	 * @param string $key
786
+	 * @param int $outputLength
787
+	 * @param string $salt
788
+	 * @param string $personal
789
+	 * @return string
790
+	 * @throws RangeException
791
+	 * @throws SodiumException
792
+	 * @throws TypeError
793
+	 */
794
+	public static function generichash_init_salt_personal(
795
+		$key = '',
796
+		$outputLength = 32,
797
+		$salt = '',
798
+		$personal = ''
799
+	) {
800
+		// This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
801
+		ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
802
+
803
+		$k = null;
804
+		if (!empty($key)) {
805
+			$k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($key);
806
+			if ($k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES) {
807
+				throw new RangeException('Invalid key size');
808
+			}
809
+		}
810
+		if (!empty($salt)) {
811
+			$s = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($salt);
812
+		} else {
813
+			$s = null;
814
+		}
815
+		if (!empty($salt)) {
816
+			$p = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($personal);
817
+		} else {
818
+			$p = null;
819
+		}
820
+
821
+		/** @var SplFixedArray $ctx */
822
+		$ctx = ParagonIE_Sodium_Core_BLAKE2b::init($k, $outputLength, $s, $p);
823
+
824
+		return ParagonIE_Sodium_Core_BLAKE2b::contextToString($ctx);
825
+	}
826
+
827
+	/**
828
+	 * Update a hashing context for BLAKE2b with $message
829
+	 *
830
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
831
+	 *
832
+	 * @param string $ctx
833
+	 * @param string $message
834
+	 * @return string
835
+	 * @throws SodiumException
836
+	 * @throws TypeError
837
+	 */
838
+	public static function generichash_update($ctx, $message)
839
+	{
840
+		// This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
841
+		ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
842
+
843
+		/** @var SplFixedArray $context */
844
+		$context = ParagonIE_Sodium_Core_BLAKE2b::stringToContext($ctx);
845
+
846
+		/** @var SplFixedArray $in */
847
+		$in = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($message);
848
+
849
+		ParagonIE_Sodium_Core_BLAKE2b::update($context, $in, $in->count());
850
+
851
+		return ParagonIE_Sodium_Core_BLAKE2b::contextToString($context);
852
+	}
853
+
854
+	/**
855
+	 * Libsodium's crypto_kx().
856
+	 *
857
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
858
+	 *
859
+	 * @param string $my_sk
860
+	 * @param string $their_pk
861
+	 * @param string $client_pk
862
+	 * @param string $server_pk
863
+	 * @return string
864
+	 * @throws SodiumException
865
+	 * @throws TypeError
866
+	 */
867
+	public static function keyExchange($my_sk, $their_pk, $client_pk, $server_pk)
868
+	{
869
+		return ParagonIE_Sodium_Compat::crypto_generichash(
870
+			ParagonIE_Sodium_Compat::crypto_scalarmult($my_sk, $their_pk) .
871
+			$client_pk .
872
+			$server_pk
873
+		);
874
+	}
875
+
876
+	/**
877
+	 * ECDH over Curve25519
878
+	 *
879
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
880
+	 *
881
+	 * @param string $sKey
882
+	 * @param string $pKey
883
+	 * @return string
884
+	 *
885
+	 * @throws SodiumException
886
+	 * @throws TypeError
887
+	 */
888
+	public static function scalarmult($sKey, $pKey)
889
+	{
890
+		$q = ParagonIE_Sodium_Core_X25519::crypto_scalarmult_curve25519_ref10($sKey, $pKey);
891
+		self::scalarmult_throw_if_zero($q);
892
+		return $q;
893
+	}
894
+
895
+	/**
896
+	 * ECDH over Curve25519, using the basepoint.
897
+	 * Used to get a secret key from a public key.
898
+	 *
899
+	 * @param string $secret
900
+	 * @return string
901
+	 *
902
+	 * @throws SodiumException
903
+	 * @throws TypeError
904
+	 */
905
+	public static function scalarmult_base($secret)
906
+	{
907
+		$q = ParagonIE_Sodium_Core_X25519::crypto_scalarmult_curve25519_ref10_base($secret);
908
+		self::scalarmult_throw_if_zero($q);
909
+		return $q;
910
+	}
911
+
912
+	/**
913
+	 * This throws an Error if a zero public key was passed to the function.
914
+	 *
915
+	 * @param string $q
916
+	 * @return void
917
+	 * @throws SodiumException
918
+	 * @throws TypeError
919
+	 */
920
+	protected static function scalarmult_throw_if_zero($q)
921
+	{
922
+		$d = 0;
923
+		for ($i = 0; $i < self::box_curve25519xsalsa20poly1305_SECRETKEYBYTES; ++$i) {
924
+			$d |= ParagonIE_Sodium_Core_Util::chrToInt($q[$i]);
925
+		}
926
+
927
+		/* branch-free variant of === 0 */
928
+		if (-(1 & (($d - 1) >> 8))) {
929
+			throw new SodiumException('Zero public key is not allowed');
930
+		}
931
+	}
932
+
933
+	/**
934
+	 * XSalsa20-Poly1305 authenticated symmetric-key encryption.
935
+	 *
936
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
937
+	 *
938
+	 * @param string $plaintext
939
+	 * @param string $nonce
940
+	 * @param string $key
941
+	 * @return string
942
+	 * @throws SodiumException
943
+	 * @throws TypeError
944
+	 */
945
+	public static function secretbox($plaintext, $nonce, $key)
946
+	{
947
+		/** @var string $subkey */
948
+		$subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);
949
+
950
+		/** @var string $block0 */
951
+		$block0 = str_repeat("\x00", 32);
952
+
953
+		/** @var int $mlen - Length of the plaintext message */
954
+		$mlen = ParagonIE_Sodium_Core_Util::strlen($plaintext);
955
+		$mlen0 = $mlen;
956
+		if ($mlen0 > 64 - self::secretbox_xsalsa20poly1305_ZEROBYTES) {
957
+			$mlen0 = 64 - self::secretbox_xsalsa20poly1305_ZEROBYTES;
958
+		}
959
+		$block0 .= ParagonIE_Sodium_Core_Util::substr($plaintext, 0, $mlen0);
960
+
961
+		/** @var string $block0 */
962
+		$block0 = ParagonIE_Sodium_Core_Salsa20::salsa20_xor(
963
+			$block0,
964
+			ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
965
+			$subkey
966
+		);
967
+
968
+		/** @var string $c */
969
+		$c = ParagonIE_Sodium_Core_Util::substr(
970
+			$block0,
971
+			self::secretbox_xsalsa20poly1305_ZEROBYTES
972
+		);
973
+		if ($mlen > $mlen0) {
974
+			$c .= ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
975
+				ParagonIE_Sodium_Core_Util::substr(
976
+					$plaintext,
977
+					self::secretbox_xsalsa20poly1305_ZEROBYTES
978
+				),
979
+				ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
980
+				1,
981
+				$subkey
982
+			);
983
+		}
984
+		$state = new ParagonIE_Sodium_Core_Poly1305_State(
985
+			ParagonIE_Sodium_Core_Util::substr(
986
+				$block0,
987
+				0,
988
+				self::onetimeauth_poly1305_KEYBYTES
989
+			)
990
+		);
991
+		try {
992
+			ParagonIE_Sodium_Compat::memzero($block0);
993
+			ParagonIE_Sodium_Compat::memzero($subkey);
994
+		} catch (SodiumException $ex) {
995
+			$block0 = null;
996
+			$subkey = null;
997
+		}
998
+
999
+		$state->update($c);
1000
+
1001
+		/** @var string $c - MAC || ciphertext */
1002
+		$c = $state->finish() . $c;
1003
+		unset($state);
1004
+
1005
+		return $c;
1006
+	}
1007
+
1008
+	/**
1009
+	 * Decrypt a ciphertext generated via secretbox().
1010
+	 *
1011
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
1012
+	 *
1013
+	 * @param string $ciphertext
1014
+	 * @param string $nonce
1015
+	 * @param string $key
1016
+	 * @return string
1017
+	 * @throws SodiumException
1018
+	 * @throws TypeError
1019
+	 */
1020
+	public static function secretbox_open($ciphertext, $nonce, $key)
1021
+	{
1022
+		/** @var string $mac */
1023
+		$mac = ParagonIE_Sodium_Core_Util::substr(
1024
+			$ciphertext,
1025
+			0,
1026
+			self::secretbox_xsalsa20poly1305_MACBYTES
1027
+		);
1028
+
1029
+		/** @var string $c */
1030
+		$c = ParagonIE_Sodium_Core_Util::substr(
1031
+			$ciphertext,
1032
+			self::secretbox_xsalsa20poly1305_MACBYTES
1033
+		);
1034
+
1035
+		/** @var int $clen */
1036
+		$clen = ParagonIE_Sodium_Core_Util::strlen($c);
1037
+
1038
+		/** @var string $subkey */
1039
+		$subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);
1040
+
1041
+		/** @var string $block0 */
1042
+		$block0 = ParagonIE_Sodium_Core_Salsa20::salsa20(
1043
+			64,
1044
+			ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
1045
+			$subkey
1046
+		);
1047
+		$verified = ParagonIE_Sodium_Core_Poly1305::onetimeauth_verify(
1048
+			$mac,
1049
+			$c,
1050
+			ParagonIE_Sodium_Core_Util::substr($block0, 0, 32)
1051
+		);
1052
+		if (!$verified) {
1053
+			try {
1054
+				ParagonIE_Sodium_Compat::memzero($subkey);
1055
+			} catch (SodiumException $ex) {
1056
+				$subkey = null;
1057
+			}
1058
+			throw new SodiumException('Invalid MAC');
1059
+		}
1060
+
1061
+		/** @var string $m - Decrypted message */
1062
+		$m = ParagonIE_Sodium_Core_Util::xorStrings(
1063
+			ParagonIE_Sodium_Core_Util::substr($block0, self::secretbox_xsalsa20poly1305_ZEROBYTES),
1064
+			ParagonIE_Sodium_Core_Util::substr($c, 0, self::secretbox_xsalsa20poly1305_ZEROBYTES)
1065
+		);
1066
+		if ($clen > self::secretbox_xsalsa20poly1305_ZEROBYTES) {
1067
+			// We had more than 1 block, so let's continue to decrypt the rest.
1068
+			$m .= ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
1069
+				ParagonIE_Sodium_Core_Util::substr(
1070
+					$c,
1071
+					self::secretbox_xsalsa20poly1305_ZEROBYTES
1072
+				),
1073
+				ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
1074
+				1,
1075
+				(string) $subkey
1076
+			);
1077
+		}
1078
+		return $m;
1079
+	}
1080
+
1081
+	/**
1082
+	 * XChaCha20-Poly1305 authenticated symmetric-key encryption.
1083
+	 *
1084
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
1085
+	 *
1086
+	 * @param string $plaintext
1087
+	 * @param string $nonce
1088
+	 * @param string $key
1089
+	 * @return string
1090
+	 * @throws SodiumException
1091
+	 * @throws TypeError
1092
+	 */
1093
+	public static function secretbox_xchacha20poly1305($plaintext, $nonce, $key)
1094
+	{
1095
+		/** @var string $subkey */
1096
+		$subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
1097
+			ParagonIE_Sodium_Core_Util::substr($nonce, 0, 16),
1098
+			$key
1099
+		);
1100
+		$nonceLast = ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);
1101
+
1102
+		/** @var string $block0 */
1103
+		$block0 = str_repeat("\x00", 32);
1104
+
1105
+		/** @var int $mlen - Length of the plaintext message */
1106
+		$mlen = ParagonIE_Sodium_Core_Util::strlen($plaintext);
1107
+		$mlen0 = $mlen;
1108
+		if ($mlen0 > 64 - self::secretbox_xchacha20poly1305_ZEROBYTES) {
1109
+			$mlen0 = 64 - self::secretbox_xchacha20poly1305_ZEROBYTES;
1110
+		}
1111
+		$block0 .= ParagonIE_Sodium_Core_Util::substr($plaintext, 0, $mlen0);
1112
+
1113
+		/** @var string $block0 */
1114
+		$block0 = ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
1115
+			$block0,
1116
+			$nonceLast,
1117
+			$subkey
1118
+		);
1119
+
1120
+		/** @var string $c */
1121
+		$c = ParagonIE_Sodium_Core_Util::substr(
1122
+			$block0,
1123
+			self::secretbox_xchacha20poly1305_ZEROBYTES
1124
+		);
1125
+		if ($mlen > $mlen0) {
1126
+			$c .= ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
1127
+				ParagonIE_Sodium_Core_Util::substr(
1128
+					$plaintext,
1129
+					self::secretbox_xchacha20poly1305_ZEROBYTES
1130
+				),
1131
+				$nonceLast,
1132
+				$subkey,
1133
+				ParagonIE_Sodium_Core_Util::store64_le(1)
1134
+			);
1135
+		}
1136
+		$state = new ParagonIE_Sodium_Core_Poly1305_State(
1137
+			ParagonIE_Sodium_Core_Util::substr(
1138
+				$block0,
1139
+				0,
1140
+				self::onetimeauth_poly1305_KEYBYTES
1141
+			)
1142
+		);
1143
+		try {
1144
+			ParagonIE_Sodium_Compat::memzero($block0);
1145
+			ParagonIE_Sodium_Compat::memzero($subkey);
1146
+		} catch (SodiumException $ex) {
1147
+			$block0 = null;
1148
+			$subkey = null;
1149
+		}
1150
+
1151
+		$state->update($c);
1152
+
1153
+		/** @var string $c - MAC || ciphertext */
1154
+		$c = $state->finish() . $c;
1155
+		unset($state);
1156
+
1157
+		return $c;
1158
+	}
1159
+
1160
+	/**
1161
+	 * Decrypt a ciphertext generated via secretbox_xchacha20poly1305().
1162
+	 *
1163
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
1164
+	 *
1165
+	 * @param string $ciphertext
1166
+	 * @param string $nonce
1167
+	 * @param string $key
1168
+	 * @return string
1169
+	 * @throws SodiumException
1170
+	 * @throws TypeError
1171
+	 */
1172
+	public static function secretbox_xchacha20poly1305_open($ciphertext, $nonce, $key)
1173
+	{
1174
+		/** @var string $mac */
1175
+		$mac = ParagonIE_Sodium_Core_Util::substr(
1176
+			$ciphertext,
1177
+			0,
1178
+			self::secretbox_xchacha20poly1305_MACBYTES
1179
+		);
1180
+
1181
+		/** @var string $c */
1182
+		$c = ParagonIE_Sodium_Core_Util::substr(
1183
+			$ciphertext,
1184
+			self::secretbox_xchacha20poly1305_MACBYTES
1185
+		);
1186
+
1187
+		/** @var int $clen */
1188
+		$clen = ParagonIE_Sodium_Core_Util::strlen($c);
1189
+
1190
+		/** @var string $subkey */
1191
+		$subkey = ParagonIE_Sodium_Core_HChaCha20::hchacha20($nonce, $key);
1192
+
1193
+		/** @var string $block0 */
1194
+		$block0 = ParagonIE_Sodium_Core_ChaCha20::stream(
1195
+			64,
1196
+			ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
1197
+			$subkey
1198
+		);
1199
+		$verified = ParagonIE_Sodium_Core_Poly1305::onetimeauth_verify(
1200
+			$mac,
1201
+			$c,
1202
+			ParagonIE_Sodium_Core_Util::substr($block0, 0, 32)
1203
+		);
1204
+
1205
+		if (!$verified) {
1206
+			try {
1207
+				ParagonIE_Sodium_Compat::memzero($subkey);
1208
+			} catch (SodiumException $ex) {
1209
+				$subkey = null;
1210
+			}
1211
+			throw new SodiumException('Invalid MAC');
1212
+		}
1213
+
1214
+		/** @var string $m - Decrypted message */
1215
+		$m = ParagonIE_Sodium_Core_Util::xorStrings(
1216
+			ParagonIE_Sodium_Core_Util::substr($block0, self::secretbox_xchacha20poly1305_ZEROBYTES),
1217
+			ParagonIE_Sodium_Core_Util::substr($c, 0, self::secretbox_xchacha20poly1305_ZEROBYTES)
1218
+		);
1219
+
1220
+		if ($clen > self::secretbox_xchacha20poly1305_ZEROBYTES) {
1221
+			// We had more than 1 block, so let's continue to decrypt the rest.
1222
+			$m .= ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
1223
+				ParagonIE_Sodium_Core_Util::substr(
1224
+					$c,
1225
+					self::secretbox_xchacha20poly1305_ZEROBYTES
1226
+				),
1227
+				ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
1228
+				(string) $subkey,
1229
+				ParagonIE_Sodium_Core_Util::store64_le(1)
1230
+			);
1231
+		}
1232
+		return $m;
1233
+	}
1234
+
1235
+	/**
1236
+	 * @param string $key
1237
+	 * @return array<int, string> Returns a state and a header.
1238
+	 * @throws Exception
1239
+	 * @throws SodiumException
1240
+	 */
1241
+	public static function secretstream_xchacha20poly1305_init_push($key)
1242
+	{
1243
+		# randombytes_buf(out, crypto_secretstream_xchacha20poly1305_HEADERBYTES);
1244
+		$out = random_bytes(24);
1245
+
1246
+		# crypto_core_hchacha20(state->k, out, k, NULL);
1247
+		$subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20($out, $key);
1248
+		$state = new ParagonIE_Sodium_Core_SecretStream_State(
1249
+			$subkey,
1250
+			ParagonIE_Sodium_Core_Util::substr($out, 16, 8) . str_repeat("\0", 4)
1251
+		);
1252
+
1253
+		# _crypto_secretstream_xchacha20poly1305_counter_reset(state);
1254
+		$state->counterReset();
1255
+
1256
+		# memcpy(STATE_INONCE(state), out + crypto_core_hchacha20_INPUTBYTES,
1257
+		#        crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1258
+		# memset(state->_pad, 0, sizeof state->_pad);
1259
+		return array(
1260
+			$state->toString(),
1261
+			$out
1262
+		);
1263
+	}
1264
+
1265
+	/**
1266
+	 * @param string $key
1267
+	 * @param string $header
1268
+	 * @return string Returns a state.
1269
+	 * @throws Exception
1270
+	 */
1271
+	public static function secretstream_xchacha20poly1305_init_pull($key, $header)
1272
+	{
1273
+		# crypto_core_hchacha20(state->k, in, k, NULL);
1274
+		$subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
1275
+			ParagonIE_Sodium_Core_Util::substr($header, 0, 16),
1276
+			$key
1277
+		);
1278
+		$state = new ParagonIE_Sodium_Core_SecretStream_State(
1279
+			$subkey,
1280
+			ParagonIE_Sodium_Core_Util::substr($header, 16)
1281
+		);
1282
+		$state->counterReset();
1283
+		# memcpy(STATE_INONCE(state), in + crypto_core_hchacha20_INPUTBYTES,
1284
+		#     crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1285
+		# memset(state->_pad, 0, sizeof state->_pad);
1286
+		# return 0;
1287
+		return $state->toString();
1288
+	}
1289
+
1290
+	/**
1291
+	 * @param string $state
1292
+	 * @param string $msg
1293
+	 * @param string $aad
1294
+	 * @param int $tag
1295
+	 * @return string
1296
+	 * @throws SodiumException
1297
+	 */
1298
+	public static function secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0)
1299
+	{
1300
+		$st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
1301
+		# crypto_onetimeauth_poly1305_state poly1305_state;
1302
+		# unsigned char                     block[64U];
1303
+		# unsigned char                     slen[8U];
1304
+		# unsigned char                    *c;
1305
+		# unsigned char                    *mac;
1306
+
1307
+		$msglen = ParagonIE_Sodium_Core_Util::strlen($msg);
1308
+		$aadlen = ParagonIE_Sodium_Core_Util::strlen($aad);
1309
+
1310
+		if ((($msglen + 63) >> 6) > 0xfffffffe) {
1311
+			throw new SodiumException(
1312
+				'message cannot be larger than SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX bytes'
1313
+			);
1314
+		}
1315
+
1316
+		# if (outlen_p != NULL) {
1317
+		#     *outlen_p = 0U;
1318
+		# }
1319
+		# if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) {
1320
+		#     sodium_misuse();
1321
+		# }
1322
+
1323
+		# crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k);
1324
+		# crypto_onetimeauth_poly1305_init(&poly1305_state, block);
1325
+		# sodium_memzero(block, sizeof block);
1326
+		$auth = new ParagonIE_Sodium_Core_Poly1305_State(
1327
+			ParagonIE_Sodium_Core_ChaCha20::ietfStream(32, $st->getCombinedNonce(), $st->getKey())
1328
+		);
1329
+
1330
+		# crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen);
1331
+		$auth->update($aad);
1332
+
1333
+		# crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0,
1334
+		#     (0x10 - adlen) & 0xf);
1335
+		$auth->update(str_repeat("\0", ((0x10 - $aadlen) & 0xf)));
1336
+
1337
+		# memset(block, 0, sizeof block);
1338
+		# block[0] = tag;
1339
+		# crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block,
1340
+		#                                    state->nonce, 1U, state->k);
1341
+		$block = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1342
+			ParagonIE_Sodium_Core_Util::intToChr($tag) . str_repeat("\0", 63),
1343
+			$st->getCombinedNonce(),
1344
+			$st->getKey(),
1345
+			ParagonIE_Sodium_Core_Util::store64_le(1)
1346
+		);
1347
+
1348
+		# crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block);
1349
+		$auth->update($block);
1350
+
1351
+		# out[0] = block[0];
1352
+		$out = $block[0];
1353
+		# c = out + (sizeof tag);
1354
+		# crypto_stream_chacha20_ietf_xor_ic(c, m, mlen, state->nonce, 2U, state->k);
1355
+		$cipher = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1356
+			$msg,
1357
+			$st->getCombinedNonce(),
1358
+			$st->getKey(),
1359
+			ParagonIE_Sodium_Core_Util::store64_le(2)
1360
+		);
1361
+
1362
+		# crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen);
1363
+		$auth->update($cipher);
1364
+
1365
+		$out .= $cipher;
1366
+		unset($cipher);
1367
+
1368
+		# crypto_onetimeauth_poly1305_update
1369
+		# (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf);
1370
+		$auth->update(str_repeat("\0", ((0x10 - 64 + $msglen) & 0xf)));
1371
+
1372
+		# STORE64_LE(slen, (uint64_t) adlen);
1373
+		$slen = ParagonIE_Sodium_Core_Util::store64_le($aadlen);
1374
+
1375
+		# crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1376
+		$auth->update($slen);
1377
+
1378
+		# STORE64_LE(slen, (sizeof block) + mlen);
1379
+		$slen = ParagonIE_Sodium_Core_Util::store64_le(64 + $msglen);
1380
+
1381
+		# crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1382
+		$auth->update($slen);
1383
+
1384
+		# mac = c + mlen;
1385
+		# crypto_onetimeauth_poly1305_final(&poly1305_state, mac);
1386
+		$mac = $auth->finish();
1387
+		$out .= $mac;
1388
+
1389
+		# sodium_memzero(&poly1305_state, sizeof poly1305_state);
1390
+		unset($auth);
1391
+
1392
+
1393
+		# XOR_BUF(STATE_INONCE(state), mac,
1394
+		#     crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1395
+		$st->xorNonce($mac);
1396
+
1397
+		# sodium_increment(STATE_COUNTER(state),
1398
+		#     crypto_secretstream_xchacha20poly1305_COUNTERBYTES);
1399
+		$st->incrementCounter();
1400
+		// Overwrite by reference:
1401
+		$state = $st->toString();
1402
+
1403
+		/** @var bool $rekey */
1404
+		$rekey = ($tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY) !== 0;
1405
+		# if ((tag & crypto_secretstream_xchacha20poly1305_TAG_REKEY) != 0 ||
1406
+		#     sodium_is_zero(STATE_COUNTER(state),
1407
+		#         crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) {
1408
+		#     crypto_secretstream_xchacha20poly1305_rekey(state);
1409
+		# }
1410
+		if ($rekey || $st->needsRekey()) {
1411
+			// DO REKEY
1412
+			self::secretstream_xchacha20poly1305_rekey($state);
1413
+		}
1414
+		# if (outlen_p != NULL) {
1415
+		#     *outlen_p = crypto_secretstream_xchacha20poly1305_ABYTES + mlen;
1416
+		# }
1417
+		return $out;
1418
+	}
1419
+
1420
+	/**
1421
+	 * @param string $state
1422
+	 * @param string $cipher
1423
+	 * @param string $aad
1424
+	 * @return bool|array{0: string, 1: int}
1425
+	 * @throws SodiumException
1426
+	 */
1427
+	public static function secretstream_xchacha20poly1305_pull(&$state, $cipher, $aad = '')
1428
+	{
1429
+		$st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
1430
+
1431
+		$cipherlen = ParagonIE_Sodium_Core_Util::strlen($cipher);
1432
+		#     mlen = inlen - crypto_secretstream_xchacha20poly1305_ABYTES;
1433
+		$msglen = $cipherlen - ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES;
1434
+		$aadlen = ParagonIE_Sodium_Core_Util::strlen($aad);
1435
+
1436
+		#     if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) {
1437
+		#         sodium_misuse();
1438
+		#     }
1439
+		if ((($msglen + 63) >> 6) > 0xfffffffe) {
1440
+			throw new SodiumException(
1441
+				'message cannot be larger than SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX bytes'
1442
+			);
1443
+		}
1444
+
1445
+		#     crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k);
1446
+		#     crypto_onetimeauth_poly1305_init(&poly1305_state, block);
1447
+		#     sodium_memzero(block, sizeof block);
1448
+		$auth = new ParagonIE_Sodium_Core_Poly1305_State(
1449
+			ParagonIE_Sodium_Core_ChaCha20::ietfStream(32, $st->getCombinedNonce(), $st->getKey())
1450
+		);
1451
+
1452
+		#     crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen);
1453
+		$auth->update($aad);
1454
+
1455
+		#     crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0,
1456
+		#         (0x10 - adlen) & 0xf);
1457
+		$auth->update(str_repeat("\0", ((0x10 - $aadlen) & 0xf)));
1458
+
1459
+
1460
+		#     memset(block, 0, sizeof block);
1461
+		#     block[0] = in[0];
1462
+		#     crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block,
1463
+		#                                        state->nonce, 1U, state->k);
1464
+		$block = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1465
+			$cipher[0] . str_repeat("\0", 63),
1466
+			$st->getCombinedNonce(),
1467
+			$st->getKey(),
1468
+			ParagonIE_Sodium_Core_Util::store64_le(1)
1469
+		);
1470
+		#     tag = block[0];
1471
+		#     block[0] = in[0];
1472
+		#     crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block);
1473
+		$tag = ParagonIE_Sodium_Core_Util::chrToInt($block[0]);
1474
+		$block[0] = $cipher[0];
1475
+		$auth->update($block);
1476
+
1477
+
1478
+		#     c = in + (sizeof tag);
1479
+		#     crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen);
1480
+		$auth->update(ParagonIE_Sodium_Core_Util::substr($cipher, 1, $msglen));
1481
+
1482
+		#     crypto_onetimeauth_poly1305_update
1483
+		#     (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf);
1484
+		$auth->update(str_repeat("\0", ((0x10 - 64 + $msglen) & 0xf)));
1485
+
1486
+		#     STORE64_LE(slen, (uint64_t) adlen);
1487
+		#     crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1488
+		$slen = ParagonIE_Sodium_Core_Util::store64_le($aadlen);
1489
+		$auth->update($slen);
1490
+
1491
+		#     STORE64_LE(slen, (sizeof block) + mlen);
1492
+		#     crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1493
+		$slen = ParagonIE_Sodium_Core_Util::store64_le(64 + $msglen);
1494
+		$auth->update($slen);
1495
+
1496
+		#     crypto_onetimeauth_poly1305_final(&poly1305_state, mac);
1497
+		#     sodium_memzero(&poly1305_state, sizeof poly1305_state);
1498
+		$mac = $auth->finish();
1499
+
1500
+		#     stored_mac = c + mlen;
1501
+		#     if (sodium_memcmp(mac, stored_mac, sizeof mac) != 0) {
1502
+		#     sodium_memzero(mac, sizeof mac);
1503
+		#         return -1;
1504
+		#     }
1505
+
1506
+		$stored = ParagonIE_Sodium_Core_Util::substr($cipher, $msglen + 1, 16);
1507
+		if (!ParagonIE_Sodium_Core_Util::hashEquals($mac, $stored)) {
1508
+			return false;
1509
+		}
1510
+
1511
+		#     crypto_stream_chacha20_ietf_xor_ic(m, c, mlen, state->nonce, 2U, state->k);
1512
+		$out = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1513
+			ParagonIE_Sodium_Core_Util::substr($cipher, 1, $msglen),
1514
+			$st->getCombinedNonce(),
1515
+			$st->getKey(),
1516
+			ParagonIE_Sodium_Core_Util::store64_le(2)
1517
+		);
1518
+
1519
+		#     XOR_BUF(STATE_INONCE(state), mac,
1520
+		#         crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1521
+		$st->xorNonce($mac);
1522
+
1523
+		#     sodium_increment(STATE_COUNTER(state),
1524
+		#         crypto_secretstream_xchacha20poly1305_COUNTERBYTES);
1525
+		$st->incrementCounter();
1526
+
1527
+		#     if ((tag & crypto_secretstream_xchacha20poly1305_TAG_REKEY) != 0 ||
1528
+		#         sodium_is_zero(STATE_COUNTER(state),
1529
+		#             crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) {
1530
+		#         crypto_secretstream_xchacha20poly1305_rekey(state);
1531
+		#     }
1532
+
1533
+		// Overwrite by reference:
1534
+		$state = $st->toString();
1535
+
1536
+		/** @var bool $rekey */
1537
+		$rekey = ($tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY) !== 0;
1538
+		if ($rekey || $st->needsRekey()) {
1539
+			// DO REKEY
1540
+			self::secretstream_xchacha20poly1305_rekey($state);
1541
+		}
1542
+		return array($out, $tag);
1543
+	}
1544
+
1545
+	/**
1546
+	 * @param string $state
1547
+	 * @return void
1548
+	 * @throws SodiumException
1549
+	 */
1550
+	public static function secretstream_xchacha20poly1305_rekey(&$state)
1551
+	{
1552
+		$st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
1553
+		# unsigned char new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES +
1554
+		# crypto_secretstream_xchacha20poly1305_INONCEBYTES];
1555
+		# size_t        i;
1556
+		# for (i = 0U; i < crypto_stream_chacha20_ietf_KEYBYTES; i++) {
1557
+		#     new_key_and_inonce[i] = state->k[i];
1558
+		# }
1559
+		$new_key_and_inonce = $st->getKey();
1560
+
1561
+		# for (i = 0U; i < crypto_secretstream_xchacha20poly1305_INONCEBYTES; i++) {
1562
+		#     new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + i] =
1563
+		#         STATE_INONCE(state)[i];
1564
+		# }
1565
+		$new_key_and_inonce .= ParagonIE_Sodium_Core_Util::substR($st->getNonce(), 0, 8);
1566
+
1567
+		# crypto_stream_chacha20_ietf_xor(new_key_and_inonce, new_key_and_inonce,
1568
+		#                                 sizeof new_key_and_inonce,
1569
+		#                                 state->nonce, state->k);
1570
+
1571
+		$st->rekey(ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1572
+			$new_key_and_inonce,
1573
+			$st->getCombinedNonce(),
1574
+			$st->getKey(),
1575
+			ParagonIE_Sodium_Core_Util::store64_le(0)
1576
+		));
1577
+
1578
+		# for (i = 0U; i < crypto_stream_chacha20_ietf_KEYBYTES; i++) {
1579
+		#     state->k[i] = new_key_and_inonce[i];
1580
+		# }
1581
+		# for (i = 0U; i < crypto_secretstream_xchacha20poly1305_INONCEBYTES; i++) {
1582
+		#     STATE_INONCE(state)[i] =
1583
+		#          new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + i];
1584
+		# }
1585
+		# _crypto_secretstream_xchacha20poly1305_counter_reset(state);
1586
+		$st->counterReset();
1587
+
1588
+		$state = $st->toString();
1589
+	}
1590
+
1591
+	/**
1592
+	 * Detached Ed25519 signature.
1593
+	 *
1594
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
1595
+	 *
1596
+	 * @param string $message
1597
+	 * @param string $sk
1598
+	 * @return string
1599
+	 * @throws SodiumException
1600
+	 * @throws TypeError
1601
+	 */
1602
+	public static function sign_detached($message, $sk)
1603
+	{
1604
+		return ParagonIE_Sodium_Core_Ed25519::sign_detached($message, $sk);
1605
+	}
1606
+
1607
+	/**
1608
+	 * Attached Ed25519 signature. (Returns a signed message.)
1609
+	 *
1610
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
1611
+	 *
1612
+	 * @param string $message
1613
+	 * @param string $sk
1614
+	 * @return string
1615
+	 * @throws SodiumException
1616
+	 * @throws TypeError
1617
+	 */
1618
+	public static function sign($message, $sk)
1619
+	{
1620
+		return ParagonIE_Sodium_Core_Ed25519::sign($message, $sk);
1621
+	}
1622
+
1623
+	/**
1624
+	 * Opens a signed message. If valid, returns the message.
1625
+	 *
1626
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
1627
+	 *
1628
+	 * @param string $signedMessage
1629
+	 * @param string $pk
1630
+	 * @return string
1631
+	 * @throws SodiumException
1632
+	 * @throws TypeError
1633
+	 */
1634
+	public static function sign_open($signedMessage, $pk)
1635
+	{
1636
+		return ParagonIE_Sodium_Core_Ed25519::sign_open($signedMessage, $pk);
1637
+	}
1638
+
1639
+	/**
1640
+	 * Verify a detached signature of a given message and public key.
1641
+	 *
1642
+	 * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
1643
+	 *
1644
+	 * @param string $signature
1645
+	 * @param string $message
1646
+	 * @param string $pk
1647
+	 * @return bool
1648
+	 * @throws SodiumException
1649
+	 * @throws TypeError
1650
+	 */
1651
+	public static function sign_verify_detached($signature, $message, $pk)
1652
+	{
1653
+		return ParagonIE_Sodium_Core_Ed25519::verify_detached($signature, $message, $pk);
1654
+	}
1655 1655
 }
Please login to merge, or discard this patch.
Spacing   +290 added lines, -290 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_Crypto', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Crypto', false ) ) {
4 4
     return;
5 5
 }
6 6
 
@@ -75,13 +75,13 @@  discard block
 block discarded – undo
75 75
         $key = ''
76 76
     ) {
77 77
         /** @var int $len - Length of message (ciphertext + MAC) */
78
-        $len = ParagonIE_Sodium_Core_Util::strlen($message);
78
+        $len = ParagonIE_Sodium_Core_Util::strlen( $message );
79 79
 
80 80
         /** @var int  $clen - Length of ciphertext */
81 81
         $clen = $len - self::aead_chacha20poly1305_ABYTES;
82 82
 
83 83
         /** @var int $adlen - Length of associated data */
84
-        $adlen = ParagonIE_Sodium_Core_Util::strlen($ad);
84
+        $adlen = ParagonIE_Sodium_Core_Util::strlen( $ad );
85 85
 
86 86
         /** @var string $mac - Message authentication code */
87 87
         $mac = ParagonIE_Sodium_Core_Util::substr(
@@ -91,7 +91,7 @@  discard block
 block discarded – undo
91 91
         );
92 92
 
93 93
         /** @var string $ciphertext - The encrypted message (sans MAC) */
94
-        $ciphertext = ParagonIE_Sodium_Core_Util::substr($message, 0, $clen);
94
+        $ciphertext = ParagonIE_Sodium_Core_Util::substr( $message, 0, $clen );
95 95
 
96 96
         /** @var string The first block of the chacha20 keystream, used as a poly1305 key */
97 97
         $block0 = ParagonIE_Sodium_Core_ChaCha20::stream(
@@ -101,21 +101,21 @@  discard block
 block discarded – undo
101 101
         );
102 102
 
103 103
         /* Recalculate the Poly1305 authentication tag (MAC): */
104
-        $state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
104
+        $state = new ParagonIE_Sodium_Core_Poly1305_State( $block0 );
105 105
         try {
106
-            ParagonIE_Sodium_Compat::memzero($block0);
107
-        } catch (SodiumException $ex) {
106
+            ParagonIE_Sodium_Compat::memzero( $block0 );
107
+        } catch ( SodiumException $ex ) {
108 108
             $block0 = null;
109 109
         }
110
-        $state->update($ad);
111
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
112
-        $state->update($ciphertext);
113
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($clen));
110
+        $state->update( $ad );
111
+        $state->update( ParagonIE_Sodium_Core_Util::store64_le( $adlen ) );
112
+        $state->update( $ciphertext );
113
+        $state->update( ParagonIE_Sodium_Core_Util::store64_le( $clen ) );
114 114
         $computed_mac = $state->finish();
115 115
 
116 116
         /* Compare the given MAC with the recalculated MAC: */
117
-        if (!ParagonIE_Sodium_Core_Util::verify_16($computed_mac, $mac)) {
118
-            throw new SodiumException('Invalid MAC');
117
+        if ( ! ParagonIE_Sodium_Core_Util::verify_16( $computed_mac, $mac ) ) {
118
+            throw new SodiumException( 'Invalid MAC' );
119 119
         }
120 120
 
121 121
         // Here, we know that the MAC is valid, so we decrypt and return the plaintext
@@ -123,7 +123,7 @@  discard block
 block discarded – undo
123 123
             $ciphertext,
124 124
             $nonce,
125 125
             $key,
126
-            ParagonIE_Sodium_Core_Util::store64_le(1)
126
+            ParagonIE_Sodium_Core_Util::store64_le( 1 )
127 127
         );
128 128
     }
129 129
 
@@ -147,10 +147,10 @@  discard block
 block discarded – undo
147 147
         $key = ''
148 148
     ) {
149 149
         /** @var int $len - Length of the plaintext message */
150
-        $len = ParagonIE_Sodium_Core_Util::strlen($message);
150
+        $len = ParagonIE_Sodium_Core_Util::strlen( $message );
151 151
 
152 152
         /** @var int $adlen - Length of the associated data */
153
-        $adlen = ParagonIE_Sodium_Core_Util::strlen($ad);
153
+        $adlen = ParagonIE_Sodium_Core_Util::strlen( $ad );
154 154
 
155 155
         /** @var string The first block of the chacha20 keystream, used as a poly1305 key */
156 156
         $block0 = ParagonIE_Sodium_Core_ChaCha20::stream(
@@ -158,10 +158,10 @@  discard block
 block discarded – undo
158 158
             $nonce,
159 159
             $key
160 160
         );
161
-        $state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
161
+        $state = new ParagonIE_Sodium_Core_Poly1305_State( $block0 );
162 162
         try {
163
-            ParagonIE_Sodium_Compat::memzero($block0);
164
-        } catch (SodiumException $ex) {
163
+            ParagonIE_Sodium_Compat::memzero( $block0 );
164
+        } catch ( SodiumException $ex ) {
165 165
             $block0 = null;
166 166
         }
167 167
 
@@ -170,13 +170,13 @@  discard block
 block discarded – undo
170 170
             $message,
171 171
             $nonce,
172 172
             $key,
173
-            ParagonIE_Sodium_Core_Util::store64_le(1)
173
+            ParagonIE_Sodium_Core_Util::store64_le( 1 )
174 174
         );
175 175
 
176
-        $state->update($ad);
177
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
178
-        $state->update($ciphertext);
179
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($len));
176
+        $state->update( $ad );
177
+        $state->update( ParagonIE_Sodium_Core_Util::store64_le( $adlen ) );
178
+        $state->update( $ciphertext );
179
+        $state->update( ParagonIE_Sodium_Core_Util::store64_le( $len ) );
180 180
         return $ciphertext . $state->finish();
181 181
     }
182 182
 
@@ -200,10 +200,10 @@  discard block
 block discarded – undo
200 200
         $key = ''
201 201
     ) {
202 202
         /** @var int $adlen - Length of associated data */
203
-        $adlen = ParagonIE_Sodium_Core_Util::strlen($ad);
203
+        $adlen = ParagonIE_Sodium_Core_Util::strlen( $ad );
204 204
 
205 205
         /** @var int $len - Length of message (ciphertext + MAC) */
206
-        $len = ParagonIE_Sodium_Core_Util::strlen($message);
206
+        $len = ParagonIE_Sodium_Core_Util::strlen( $message );
207 207
 
208 208
         /** @var int  $clen - Length of ciphertext */
209 209
         $clen = $len - self::aead_chacha20poly1305_IETF_ABYTES;
@@ -230,23 +230,23 @@  discard block
 block discarded – undo
230 230
         );
231 231
 
232 232
         /* Recalculate the Poly1305 authentication tag (MAC): */
233
-        $state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
233
+        $state = new ParagonIE_Sodium_Core_Poly1305_State( $block0 );
234 234
         try {
235
-            ParagonIE_Sodium_Compat::memzero($block0);
236
-        } catch (SodiumException $ex) {
235
+            ParagonIE_Sodium_Compat::memzero( $block0 );
236
+        } catch ( SodiumException $ex ) {
237 237
             $block0 = null;
238 238
         }
239
-        $state->update($ad);
240
-        $state->update(str_repeat("\x00", ((0x10 - $adlen) & 0xf)));
241
-        $state->update($ciphertext);
242
-        $state->update(str_repeat("\x00", (0x10 - $clen) & 0xf));
243
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
244
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($clen));
239
+        $state->update( $ad );
240
+        $state->update( str_repeat( "\x00", ( ( 0x10 - $adlen ) & 0xf ) ) );
241
+        $state->update( $ciphertext );
242
+        $state->update( str_repeat( "\x00", ( 0x10 - $clen ) & 0xf ) );
243
+        $state->update( ParagonIE_Sodium_Core_Util::store64_le( $adlen ) );
244
+        $state->update( ParagonIE_Sodium_Core_Util::store64_le( $clen ) );
245 245
         $computed_mac = $state->finish();
246 246
 
247 247
         /* Compare the given MAC with the recalculated MAC: */
248
-        if (!ParagonIE_Sodium_Core_Util::verify_16($computed_mac, $mac)) {
249
-            throw new SodiumException('Invalid MAC');
248
+        if ( ! ParagonIE_Sodium_Core_Util::verify_16( $computed_mac, $mac ) ) {
249
+            throw new SodiumException( 'Invalid MAC' );
250 250
         }
251 251
 
252 252
         // Here, we know that the MAC is valid, so we decrypt and return the plaintext
@@ -254,7 +254,7 @@  discard block
 block discarded – undo
254 254
             $ciphertext,
255 255
             $nonce,
256 256
             $key,
257
-            ParagonIE_Sodium_Core_Util::store64_le(1)
257
+            ParagonIE_Sodium_Core_Util::store64_le( 1 )
258 258
         );
259 259
     }
260 260
 
@@ -278,10 +278,10 @@  discard block
 block discarded – undo
278 278
         $key = ''
279 279
     ) {
280 280
         /** @var int $len - Length of the plaintext message */
281
-        $len = ParagonIE_Sodium_Core_Util::strlen($message);
281
+        $len = ParagonIE_Sodium_Core_Util::strlen( $message );
282 282
 
283 283
         /** @var int $adlen - Length of the associated data */
284
-        $adlen = ParagonIE_Sodium_Core_Util::strlen($ad);
284
+        $adlen = ParagonIE_Sodium_Core_Util::strlen( $ad );
285 285
 
286 286
         /** @var string The first block of the chacha20 keystream, used as a poly1305 key */
287 287
         $block0 = ParagonIE_Sodium_Core_ChaCha20::ietfStream(
@@ -289,10 +289,10 @@  discard block
 block discarded – undo
289 289
             $nonce,
290 290
             $key
291 291
         );
292
-        $state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
292
+        $state = new ParagonIE_Sodium_Core_Poly1305_State( $block0 );
293 293
         try {
294
-            ParagonIE_Sodium_Compat::memzero($block0);
295
-        } catch (SodiumException $ex) {
294
+            ParagonIE_Sodium_Compat::memzero( $block0 );
295
+        } catch ( SodiumException $ex ) {
296 296
             $block0 = null;
297 297
         }
298 298
 
@@ -301,15 +301,15 @@  discard block
 block discarded – undo
301 301
             $message,
302 302
             $nonce,
303 303
             $key,
304
-            ParagonIE_Sodium_Core_Util::store64_le(1)
304
+            ParagonIE_Sodium_Core_Util::store64_le( 1 )
305 305
         );
306 306
 
307
-        $state->update($ad);
308
-        $state->update(str_repeat("\x00", ((0x10 - $adlen) & 0xf)));
309
-        $state->update($ciphertext);
310
-        $state->update(str_repeat("\x00", ((0x10 - $len) & 0xf)));
311
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
312
-        $state->update(ParagonIE_Sodium_Core_Util::store64_le($len));
307
+        $state->update( $ad );
308
+        $state->update( str_repeat( "\x00", ( ( 0x10 - $adlen ) & 0xf ) ) );
309
+        $state->update( $ciphertext );
310
+        $state->update( str_repeat( "\x00", ( ( 0x10 - $len ) & 0xf ) ) );
311
+        $state->update( ParagonIE_Sodium_Core_Util::store64_le( $adlen ) );
312
+        $state->update( ParagonIE_Sodium_Core_Util::store64_le( $len ) );
313 313
         return $ciphertext . $state->finish();
314 314
     }
315 315
 
@@ -333,13 +333,13 @@  discard block
 block discarded – undo
333 333
         $key = ''
334 334
     ) {
335 335
         $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
336
-            ParagonIE_Sodium_Core_Util::substr($nonce, 0, 16),
336
+            ParagonIE_Sodium_Core_Util::substr( $nonce, 0, 16 ),
337 337
             $key
338 338
         );
339 339
         $nonceLast = "\x00\x00\x00\x00" .
340
-            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);
340
+            ParagonIE_Sodium_Core_Util::substr( $nonce, 16, 8 );
341 341
 
342
-        return self::aead_chacha20poly1305_ietf_decrypt($message, $ad, $nonceLast, $subkey);
342
+        return self::aead_chacha20poly1305_ietf_decrypt( $message, $ad, $nonceLast, $subkey );
343 343
     }
344 344
 
345 345
     /**
@@ -362,13 +362,13 @@  discard block
 block discarded – undo
362 362
         $key = ''
363 363
     ) {
364 364
         $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
365
-            ParagonIE_Sodium_Core_Util::substr($nonce, 0, 16),
365
+            ParagonIE_Sodium_Core_Util::substr( $nonce, 0, 16 ),
366 366
             $key
367 367
         );
368 368
         $nonceLast = "\x00\x00\x00\x00" .
369
-            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);
369
+            ParagonIE_Sodium_Core_Util::substr( $nonce, 16, 8 );
370 370
 
371
-        return self::aead_chacha20poly1305_ietf_encrypt($message, $ad, $nonceLast, $subkey);
371
+        return self::aead_chacha20poly1305_ietf_encrypt( $message, $ad, $nonceLast, $subkey );
372 372
     }
373 373
 
374 374
     /**
@@ -381,10 +381,10 @@  discard block
 block discarded – undo
381 381
      * @return string
382 382
      * @throws TypeError
383 383
      */
384
-    public static function auth($message, $key)
384
+    public static function auth( $message, $key )
385 385
     {
386 386
         return ParagonIE_Sodium_Core_Util::substr(
387
-            hash_hmac('sha512', $message, $key, true),
387
+            hash_hmac( 'sha512', $message, $key, true ),
388 388
             0,
389 389
             32
390 390
         );
@@ -402,11 +402,11 @@  discard block
 block discarded – undo
402 402
      * @throws SodiumException
403 403
      * @throws TypeError
404 404
      */
405
-    public static function auth_verify($mac, $message, $key)
405
+    public static function auth_verify( $mac, $message, $key )
406 406
     {
407 407
         return ParagonIE_Sodium_Core_Util::hashEquals(
408 408
             $mac,
409
-            self::auth($message, $key)
409
+            self::auth( $message, $key )
410 410
         );
411 411
     }
412 412
 
@@ -422,14 +422,14 @@  discard block
 block discarded – undo
422 422
      * @throws SodiumException
423 423
      * @throws TypeError
424 424
      */
425
-    public static function box($plaintext, $nonce, $keypair)
425
+    public static function box( $plaintext, $nonce, $keypair )
426 426
     {
427 427
         $c = self::secretbox(
428 428
             $plaintext,
429 429
             $nonce,
430 430
             self::box_beforenm(
431
-                self::box_secretkey($keypair),
432
-                self::box_publickey($keypair)
431
+                self::box_secretkey( $keypair ),
432
+                self::box_publickey( $keypair )
433 433
             )
434 434
         );
435 435
         return $c;
@@ -446,16 +446,16 @@  discard block
 block discarded – undo
446 446
      * @throws SodiumException
447 447
      * @throws TypeError
448 448
      */
449
-    public static function box_seal($message, $publicKey)
449
+    public static function box_seal( $message, $publicKey )
450 450
     {
451 451
         /** @var string $ephemeralKeypair */
452 452
         $ephemeralKeypair = self::box_keypair();
453 453
 
454 454
         /** @var string $ephemeralSK */
455
-        $ephemeralSK = self::box_secretkey($ephemeralKeypair);
455
+        $ephemeralSK = self::box_secretkey( $ephemeralKeypair );
456 456
 
457 457
         /** @var string $ephemeralPK */
458
-        $ephemeralPK = self::box_publickey($ephemeralKeypair);
458
+        $ephemeralPK = self::box_publickey( $ephemeralKeypair );
459 459
 
460 460
         /** @var string $nonce */
461 461
         $nonce = self::generichash(
@@ -465,15 +465,15 @@  discard block
 block discarded – undo
465 465
         );
466 466
 
467 467
         /** @var string $keypair - The combined keypair used in crypto_box() */
468
-        $keypair = self::box_keypair_from_secretkey_and_publickey($ephemeralSK, $publicKey);
468
+        $keypair = self::box_keypair_from_secretkey_and_publickey( $ephemeralSK, $publicKey );
469 469
 
470 470
         /** @var string $ciphertext Ciphertext + MAC from crypto_box */
471
-        $ciphertext = self::box($message, $nonce, $keypair);
471
+        $ciphertext = self::box( $message, $nonce, $keypair );
472 472
         try {
473
-            ParagonIE_Sodium_Compat::memzero($ephemeralKeypair);
474
-            ParagonIE_Sodium_Compat::memzero($ephemeralSK);
475
-            ParagonIE_Sodium_Compat::memzero($nonce);
476
-        } catch (SodiumException $ex) {
473
+            ParagonIE_Sodium_Compat::memzero( $ephemeralKeypair );
474
+            ParagonIE_Sodium_Compat::memzero( $ephemeralSK );
475
+            ParagonIE_Sodium_Compat::memzero( $nonce );
476
+        } catch ( SodiumException $ex ) {
477 477
             $ephemeralKeypair = null;
478 478
             $ephemeralSK = null;
479 479
             $nonce = null;
@@ -492,19 +492,19 @@  discard block
 block discarded – undo
492 492
      * @throws SodiumException
493 493
      * @throws TypeError
494 494
      */
495
-    public static function box_seal_open($message, $keypair)
495
+    public static function box_seal_open( $message, $keypair )
496 496
     {
497 497
         /** @var string $ephemeralPK */
498
-        $ephemeralPK = ParagonIE_Sodium_Core_Util::substr($message, 0, 32);
498
+        $ephemeralPK = ParagonIE_Sodium_Core_Util::substr( $message, 0, 32 );
499 499
 
500 500
         /** @var string $ciphertext (ciphertext + MAC) */
501
-        $ciphertext = ParagonIE_Sodium_Core_Util::substr($message, 32);
501
+        $ciphertext = ParagonIE_Sodium_Core_Util::substr( $message, 32 );
502 502
 
503 503
         /** @var string $secretKey */
504
-        $secretKey = self::box_secretkey($keypair);
504
+        $secretKey = self::box_secretkey( $keypair );
505 505
 
506 506
         /** @var string $publicKey */
507
-        $publicKey = self::box_publickey($keypair);
507
+        $publicKey = self::box_publickey( $keypair );
508 508
 
509 509
         /** @var string $nonce */
510 510
         $nonce = self::generichash(
@@ -514,15 +514,15 @@  discard block
 block discarded – undo
514 514
         );
515 515
 
516 516
         /** @var string $keypair */
517
-        $keypair = self::box_keypair_from_secretkey_and_publickey($secretKey, $ephemeralPK);
517
+        $keypair = self::box_keypair_from_secretkey_and_publickey( $secretKey, $ephemeralPK );
518 518
 
519 519
         /** @var string $m */
520
-        $m = self::box_open($ciphertext, $nonce, $keypair);
520
+        $m = self::box_open( $ciphertext, $nonce, $keypair );
521 521
         try {
522
-            ParagonIE_Sodium_Compat::memzero($secretKey);
523
-            ParagonIE_Sodium_Compat::memzero($ephemeralPK);
524
-            ParagonIE_Sodium_Compat::memzero($nonce);
525
-        } catch (SodiumException $ex) {
522
+            ParagonIE_Sodium_Compat::memzero( $secretKey );
523
+            ParagonIE_Sodium_Compat::memzero( $ephemeralPK );
524
+            ParagonIE_Sodium_Compat::memzero( $nonce );
525
+        } catch ( SodiumException $ex ) {
526 526
             $secretKey = null;
527 527
             $ephemeralPK = null;
528 528
             $nonce = null;
@@ -541,11 +541,11 @@  discard block
 block discarded – undo
541 541
      * @throws SodiumException
542 542
      * @throws TypeError
543 543
      */
544
-    public static function box_beforenm($sk, $pk)
544
+    public static function box_beforenm( $sk, $pk )
545 545
     {
546 546
         return ParagonIE_Sodium_Core_HSalsa20::hsalsa20(
547
-            str_repeat("\x00", 16),
548
-            self::scalarmult($sk, $pk)
547
+            str_repeat( "\x00", 16 ),
548
+            self::scalarmult( $sk, $pk )
549 549
         );
550 550
     }
551 551
 
@@ -559,8 +559,8 @@  discard block
 block discarded – undo
559 559
      */
560 560
     public static function box_keypair()
561 561
     {
562
-        $sKey = random_bytes(32);
563
-        $pKey = self::scalarmult_base($sKey);
562
+        $sKey = random_bytes( 32 );
563
+        $pKey = self::scalarmult_base( $sKey );
564 564
         return $sKey . $pKey;
565 565
     }
566 566
 
@@ -570,14 +570,14 @@  discard block
 block discarded – undo
570 570
      * @throws SodiumException
571 571
      * @throws TypeError
572 572
      */
573
-    public static function box_seed_keypair($seed)
573
+    public static function box_seed_keypair( $seed )
574 574
     {
575 575
         $sKey = ParagonIE_Sodium_Core_Util::substr(
576
-            hash('sha512', $seed, true),
576
+            hash( 'sha512', $seed, true ),
577 577
             0,
578 578
             32
579 579
         );
580
-        $pKey = self::scalarmult_base($sKey);
580
+        $pKey = self::scalarmult_base( $sKey );
581 581
         return $sKey . $pKey;
582 582
     }
583 583
 
@@ -589,10 +589,10 @@  discard block
 block discarded – undo
589 589
      * @return string
590 590
      * @throws TypeError
591 591
      */
592
-    public static function box_keypair_from_secretkey_and_publickey($sKey, $pKey)
592
+    public static function box_keypair_from_secretkey_and_publickey( $sKey, $pKey )
593 593
     {
594
-        return ParagonIE_Sodium_Core_Util::substr($sKey, 0, 32) .
595
-            ParagonIE_Sodium_Core_Util::substr($pKey, 0, 32);
594
+        return ParagonIE_Sodium_Core_Util::substr( $sKey, 0, 32 ) .
595
+            ParagonIE_Sodium_Core_Util::substr( $pKey, 0, 32 );
596 596
     }
597 597
 
598 598
     /**
@@ -603,14 +603,14 @@  discard block
 block discarded – undo
603 603
      * @throws RangeException
604 604
      * @throws TypeError
605 605
      */
606
-    public static function box_secretkey($keypair)
606
+    public static function box_secretkey( $keypair )
607 607
     {
608
-        if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== 64) {
608
+        if ( ParagonIE_Sodium_Core_Util::strlen( $keypair ) !== 64 ) {
609 609
             throw new RangeException(
610 610
                 'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES bytes long.'
611 611
             );
612 612
         }
613
-        return ParagonIE_Sodium_Core_Util::substr($keypair, 0, 32);
613
+        return ParagonIE_Sodium_Core_Util::substr( $keypair, 0, 32 );
614 614
     }
615 615
 
616 616
     /**
@@ -621,14 +621,14 @@  discard block
 block discarded – undo
621 621
      * @throws RangeException
622 622
      * @throws TypeError
623 623
      */
624
-    public static function box_publickey($keypair)
624
+    public static function box_publickey( $keypair )
625 625
     {
626
-        if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
626
+        if ( ParagonIE_Sodium_Core_Util::strlen( $keypair ) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES ) {
627 627
             throw new RangeException(
628 628
                 'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES bytes long.'
629 629
             );
630 630
         }
631
-        return ParagonIE_Sodium_Core_Util::substr($keypair, 32, 32);
631
+        return ParagonIE_Sodium_Core_Util::substr( $keypair, 32, 32 );
632 632
     }
633 633
 
634 634
     /**
@@ -640,14 +640,14 @@  discard block
 block discarded – undo
640 640
      * @throws SodiumException
641 641
      * @throws TypeError
642 642
      */
643
-    public static function box_publickey_from_secretkey($sKey)
643
+    public static function box_publickey_from_secretkey( $sKey )
644 644
     {
645
-        if (ParagonIE_Sodium_Core_Util::strlen($sKey) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_SECRETKEYBYTES) {
645
+        if ( ParagonIE_Sodium_Core_Util::strlen( $sKey ) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_SECRETKEYBYTES ) {
646 646
             throw new RangeException(
647 647
                 'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_SECRETKEYBYTES bytes long.'
648 648
             );
649 649
         }
650
-        return self::scalarmult_base($sKey);
650
+        return self::scalarmult_base( $sKey );
651 651
     }
652 652
 
653 653
     /**
@@ -662,14 +662,14 @@  discard block
 block discarded – undo
662 662
      * @throws SodiumException
663 663
      * @throws TypeError
664 664
      */
665
-    public static function box_open($ciphertext, $nonce, $keypair)
665
+    public static function box_open( $ciphertext, $nonce, $keypair )
666 666
     {
667 667
         return self::secretbox_open(
668 668
             $ciphertext,
669 669
             $nonce,
670 670
             self::box_beforenm(
671
-                self::box_secretkey($keypair),
672
-                self::box_publickey($keypair)
671
+                self::box_secretkey( $keypair ),
672
+                self::box_publickey( $keypair )
673 673
             )
674 674
         );
675 675
     }
@@ -687,34 +687,34 @@  discard block
 block discarded – undo
687 687
      * @throws SodiumException
688 688
      * @throws TypeError
689 689
      */
690
-    public static function generichash($message, $key = '', $outlen = 32)
690
+    public static function generichash( $message, $key = '', $outlen = 32 )
691 691
     {
692 692
         // This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
693 693
         ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
694 694
 
695 695
         $k = null;
696
-        if (!empty($key)) {
696
+        if ( ! empty( $key ) ) {
697 697
             /** @var SplFixedArray $k */
698
-            $k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($key);
699
-            if ($k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES) {
700
-                throw new RangeException('Invalid key size');
698
+            $k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray( $key );
699
+            if ( $k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES ) {
700
+                throw new RangeException( 'Invalid key size' );
701 701
             }
702 702
         }
703 703
 
704 704
         /** @var SplFixedArray $in */
705
-        $in = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($message);
705
+        $in = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray( $message );
706 706
 
707 707
         /** @var SplFixedArray $ctx */
708
-        $ctx = ParagonIE_Sodium_Core_BLAKE2b::init($k, $outlen);
709
-        ParagonIE_Sodium_Core_BLAKE2b::update($ctx, $in, $in->count());
708
+        $ctx = ParagonIE_Sodium_Core_BLAKE2b::init( $k, $outlen );
709
+        ParagonIE_Sodium_Core_BLAKE2b::update( $ctx, $in, $in->count() );
710 710
 
711 711
         /** @var SplFixedArray $out */
712
-        $out = new SplFixedArray($outlen);
713
-        $out = ParagonIE_Sodium_Core_BLAKE2b::finish($ctx, $out);
712
+        $out = new SplFixedArray( $outlen );
713
+        $out = ParagonIE_Sodium_Core_BLAKE2b::finish( $ctx, $out );
714 714
 
715 715
         /** @var array<int, int> */
716 716
         $outArray = $out->toArray();
717
-        return ParagonIE_Sodium_Core_Util::intArrayToString($outArray);
717
+        return ParagonIE_Sodium_Core_Util::intArrayToString( $outArray );
718 718
     }
719 719
 
720 720
     /**
@@ -728,22 +728,22 @@  discard block
 block discarded – undo
728 728
      * @throws SodiumException
729 729
      * @throws TypeError
730 730
      */
731
-    public static function generichash_final($ctx, $outlen = 32)
731
+    public static function generichash_final( $ctx, $outlen = 32 )
732 732
     {
733
-        if (!is_string($ctx)) {
734
-            throw new TypeError('Context must be a string');
733
+        if ( ! is_string( $ctx ) ) {
734
+            throw new TypeError( 'Context must be a string' );
735 735
         }
736
-        $out = new SplFixedArray($outlen);
736
+        $out = new SplFixedArray( $outlen );
737 737
 
738 738
         /** @var SplFixedArray $context */
739
-        $context = ParagonIE_Sodium_Core_BLAKE2b::stringToContext($ctx);
739
+        $context = ParagonIE_Sodium_Core_BLAKE2b::stringToContext( $ctx );
740 740
 
741 741
         /** @var SplFixedArray $out */
742
-        $out = ParagonIE_Sodium_Core_BLAKE2b::finish($context, $out);
742
+        $out = ParagonIE_Sodium_Core_BLAKE2b::finish( $context, $out );
743 743
 
744 744
         /** @var array<int, int> */
745 745
         $outArray = $out->toArray();
746
-        return ParagonIE_Sodium_Core_Util::intArrayToString($outArray);
746
+        return ParagonIE_Sodium_Core_Util::intArrayToString( $outArray );
747 747
     }
748 748
 
749 749
     /**
@@ -758,23 +758,23 @@  discard block
 block discarded – undo
758 758
      * @throws SodiumException
759 759
      * @throws TypeError
760 760
      */
761
-    public static function generichash_init($key = '', $outputLength = 32)
761
+    public static function generichash_init( $key = '', $outputLength = 32 )
762 762
     {
763 763
         // This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
764 764
         ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
765 765
 
766 766
         $k = null;
767
-        if (!empty($key)) {
768
-            $k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($key);
769
-            if ($k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES) {
770
-                throw new RangeException('Invalid key size');
767
+        if ( ! empty( $key ) ) {
768
+            $k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray( $key );
769
+            if ( $k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES ) {
770
+                throw new RangeException( 'Invalid key size' );
771 771
             }
772 772
         }
773 773
 
774 774
         /** @var SplFixedArray $ctx */
775
-        $ctx = ParagonIE_Sodium_Core_BLAKE2b::init($k, $outputLength);
775
+        $ctx = ParagonIE_Sodium_Core_BLAKE2b::init( $k, $outputLength );
776 776
 
777
-        return ParagonIE_Sodium_Core_BLAKE2b::contextToString($ctx);
777
+        return ParagonIE_Sodium_Core_BLAKE2b::contextToString( $ctx );
778 778
     }
779 779
 
780 780
     /**
@@ -801,27 +801,27 @@  discard block
 block discarded – undo
801 801
         ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
802 802
 
803 803
         $k = null;
804
-        if (!empty($key)) {
805
-            $k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($key);
806
-            if ($k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES) {
807
-                throw new RangeException('Invalid key size');
804
+        if ( ! empty( $key ) ) {
805
+            $k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray( $key );
806
+            if ( $k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES ) {
807
+                throw new RangeException( 'Invalid key size' );
808 808
             }
809 809
         }
810
-        if (!empty($salt)) {
811
-            $s = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($salt);
810
+        if ( ! empty( $salt ) ) {
811
+            $s = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray( $salt );
812 812
         } else {
813 813
             $s = null;
814 814
         }
815
-        if (!empty($salt)) {
816
-            $p = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($personal);
815
+        if ( ! empty( $salt ) ) {
816
+            $p = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray( $personal );
817 817
         } else {
818 818
             $p = null;
819 819
         }
820 820
 
821 821
         /** @var SplFixedArray $ctx */
822
-        $ctx = ParagonIE_Sodium_Core_BLAKE2b::init($k, $outputLength, $s, $p);
822
+        $ctx = ParagonIE_Sodium_Core_BLAKE2b::init( $k, $outputLength, $s, $p );
823 823
 
824
-        return ParagonIE_Sodium_Core_BLAKE2b::contextToString($ctx);
824
+        return ParagonIE_Sodium_Core_BLAKE2b::contextToString( $ctx );
825 825
     }
826 826
 
827 827
     /**
@@ -835,20 +835,20 @@  discard block
 block discarded – undo
835 835
      * @throws SodiumException
836 836
      * @throws TypeError
837 837
      */
838
-    public static function generichash_update($ctx, $message)
838
+    public static function generichash_update( $ctx, $message )
839 839
     {
840 840
         // This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
841 841
         ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
842 842
 
843 843
         /** @var SplFixedArray $context */
844
-        $context = ParagonIE_Sodium_Core_BLAKE2b::stringToContext($ctx);
844
+        $context = ParagonIE_Sodium_Core_BLAKE2b::stringToContext( $ctx );
845 845
 
846 846
         /** @var SplFixedArray $in */
847
-        $in = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($message);
847
+        $in = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray( $message );
848 848
 
849
-        ParagonIE_Sodium_Core_BLAKE2b::update($context, $in, $in->count());
849
+        ParagonIE_Sodium_Core_BLAKE2b::update( $context, $in, $in->count() );
850 850
 
851
-        return ParagonIE_Sodium_Core_BLAKE2b::contextToString($context);
851
+        return ParagonIE_Sodium_Core_BLAKE2b::contextToString( $context );
852 852
     }
853 853
 
854 854
     /**
@@ -864,10 +864,10 @@  discard block
 block discarded – undo
864 864
      * @throws SodiumException
865 865
      * @throws TypeError
866 866
      */
867
-    public static function keyExchange($my_sk, $their_pk, $client_pk, $server_pk)
867
+    public static function keyExchange( $my_sk, $their_pk, $client_pk, $server_pk )
868 868
     {
869 869
         return ParagonIE_Sodium_Compat::crypto_generichash(
870
-            ParagonIE_Sodium_Compat::crypto_scalarmult($my_sk, $their_pk) .
870
+            ParagonIE_Sodium_Compat::crypto_scalarmult( $my_sk, $their_pk ) .
871 871
             $client_pk .
872 872
             $server_pk
873 873
         );
@@ -885,10 +885,10 @@  discard block
 block discarded – undo
885 885
      * @throws SodiumException
886 886
      * @throws TypeError
887 887
      */
888
-    public static function scalarmult($sKey, $pKey)
888
+    public static function scalarmult( $sKey, $pKey )
889 889
     {
890
-        $q = ParagonIE_Sodium_Core_X25519::crypto_scalarmult_curve25519_ref10($sKey, $pKey);
891
-        self::scalarmult_throw_if_zero($q);
890
+        $q = ParagonIE_Sodium_Core_X25519::crypto_scalarmult_curve25519_ref10( $sKey, $pKey );
891
+        self::scalarmult_throw_if_zero( $q );
892 892
         return $q;
893 893
     }
894 894
 
@@ -902,10 +902,10 @@  discard block
 block discarded – undo
902 902
      * @throws SodiumException
903 903
      * @throws TypeError
904 904
      */
905
-    public static function scalarmult_base($secret)
905
+    public static function scalarmult_base( $secret )
906 906
     {
907
-        $q = ParagonIE_Sodium_Core_X25519::crypto_scalarmult_curve25519_ref10_base($secret);
908
-        self::scalarmult_throw_if_zero($q);
907
+        $q = ParagonIE_Sodium_Core_X25519::crypto_scalarmult_curve25519_ref10_base( $secret );
908
+        self::scalarmult_throw_if_zero( $q );
909 909
         return $q;
910 910
     }
911 911
 
@@ -917,16 +917,16 @@  discard block
 block discarded – undo
917 917
      * @throws SodiumException
918 918
      * @throws TypeError
919 919
      */
920
-    protected static function scalarmult_throw_if_zero($q)
920
+    protected static function scalarmult_throw_if_zero( $q )
921 921
     {
922 922
         $d = 0;
923
-        for ($i = 0; $i < self::box_curve25519xsalsa20poly1305_SECRETKEYBYTES; ++$i) {
924
-            $d |= ParagonIE_Sodium_Core_Util::chrToInt($q[$i]);
923
+        for ( $i = 0; $i < self::box_curve25519xsalsa20poly1305_SECRETKEYBYTES; ++$i ) {
924
+            $d |= ParagonIE_Sodium_Core_Util::chrToInt( $q[ $i ] );
925 925
         }
926 926
 
927 927
         /* branch-free variant of === 0 */
928
-        if (-(1 & (($d - 1) >> 8))) {
929
-            throw new SodiumException('Zero public key is not allowed');
928
+        if (-( 1 & ( ( $d - 1 ) >> 8 ) )) {
929
+            throw new SodiumException( 'Zero public key is not allowed' );
930 930
         }
931 931
     }
932 932
 
@@ -942,26 +942,26 @@  discard block
 block discarded – undo
942 942
      * @throws SodiumException
943 943
      * @throws TypeError
944 944
      */
945
-    public static function secretbox($plaintext, $nonce, $key)
945
+    public static function secretbox( $plaintext, $nonce, $key )
946 946
     {
947 947
         /** @var string $subkey */
948
-        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);
948
+        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20( $nonce, $key );
949 949
 
950 950
         /** @var string $block0 */
951
-        $block0 = str_repeat("\x00", 32);
951
+        $block0 = str_repeat( "\x00", 32 );
952 952
 
953 953
         /** @var int $mlen - Length of the plaintext message */
954
-        $mlen = ParagonIE_Sodium_Core_Util::strlen($plaintext);
954
+        $mlen = ParagonIE_Sodium_Core_Util::strlen( $plaintext );
955 955
         $mlen0 = $mlen;
956
-        if ($mlen0 > 64 - self::secretbox_xsalsa20poly1305_ZEROBYTES) {
956
+        if ( $mlen0 > 64 - self::secretbox_xsalsa20poly1305_ZEROBYTES ) {
957 957
             $mlen0 = 64 - self::secretbox_xsalsa20poly1305_ZEROBYTES;
958 958
         }
959
-        $block0 .= ParagonIE_Sodium_Core_Util::substr($plaintext, 0, $mlen0);
959
+        $block0 .= ParagonIE_Sodium_Core_Util::substr( $plaintext, 0, $mlen0 );
960 960
 
961 961
         /** @var string $block0 */
962 962
         $block0 = ParagonIE_Sodium_Core_Salsa20::salsa20_xor(
963 963
             $block0,
964
-            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
964
+            ParagonIE_Sodium_Core_Util::substr( $nonce, 16, 8 ),
965 965
             $subkey
966 966
         );
967 967
 
@@ -970,13 +970,13 @@  discard block
 block discarded – undo
970 970
             $block0,
971 971
             self::secretbox_xsalsa20poly1305_ZEROBYTES
972 972
         );
973
-        if ($mlen > $mlen0) {
973
+        if ( $mlen > $mlen0 ) {
974 974
             $c .= ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
975 975
                 ParagonIE_Sodium_Core_Util::substr(
976 976
                     $plaintext,
977 977
                     self::secretbox_xsalsa20poly1305_ZEROBYTES
978 978
                 ),
979
-                ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
979
+                ParagonIE_Sodium_Core_Util::substr( $nonce, 16, 8 ),
980 980
                 1,
981 981
                 $subkey
982 982
             );
@@ -989,18 +989,18 @@  discard block
 block discarded – undo
989 989
             )
990 990
         );
991 991
         try {
992
-            ParagonIE_Sodium_Compat::memzero($block0);
993
-            ParagonIE_Sodium_Compat::memzero($subkey);
994
-        } catch (SodiumException $ex) {
992
+            ParagonIE_Sodium_Compat::memzero( $block0 );
993
+            ParagonIE_Sodium_Compat::memzero( $subkey );
994
+        } catch ( SodiumException $ex ) {
995 995
             $block0 = null;
996 996
             $subkey = null;
997 997
         }
998 998
 
999
-        $state->update($c);
999
+        $state->update( $c );
1000 1000
 
1001 1001
         /** @var string $c - MAC || ciphertext */
1002 1002
         $c = $state->finish() . $c;
1003
-        unset($state);
1003
+        unset( $state );
1004 1004
 
1005 1005
         return $c;
1006 1006
     }
@@ -1017,7 +1017,7 @@  discard block
 block discarded – undo
1017 1017
      * @throws SodiumException
1018 1018
      * @throws TypeError
1019 1019
      */
1020
-    public static function secretbox_open($ciphertext, $nonce, $key)
1020
+    public static function secretbox_open( $ciphertext, $nonce, $key )
1021 1021
     {
1022 1022
         /** @var string $mac */
1023 1023
         $mac = ParagonIE_Sodium_Core_Util::substr(
@@ -1033,46 +1033,46 @@  discard block
 block discarded – undo
1033 1033
         );
1034 1034
 
1035 1035
         /** @var int $clen */
1036
-        $clen = ParagonIE_Sodium_Core_Util::strlen($c);
1036
+        $clen = ParagonIE_Sodium_Core_Util::strlen( $c );
1037 1037
 
1038 1038
         /** @var string $subkey */
1039
-        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);
1039
+        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20( $nonce, $key );
1040 1040
 
1041 1041
         /** @var string $block0 */
1042 1042
         $block0 = ParagonIE_Sodium_Core_Salsa20::salsa20(
1043 1043
             64,
1044
-            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
1044
+            ParagonIE_Sodium_Core_Util::substr( $nonce, 16, 8 ),
1045 1045
             $subkey
1046 1046
         );
1047 1047
         $verified = ParagonIE_Sodium_Core_Poly1305::onetimeauth_verify(
1048 1048
             $mac,
1049 1049
             $c,
1050
-            ParagonIE_Sodium_Core_Util::substr($block0, 0, 32)
1050
+            ParagonIE_Sodium_Core_Util::substr( $block0, 0, 32 )
1051 1051
         );
1052
-        if (!$verified) {
1052
+        if ( ! $verified ) {
1053 1053
             try {
1054
-                ParagonIE_Sodium_Compat::memzero($subkey);
1055
-            } catch (SodiumException $ex) {
1054
+                ParagonIE_Sodium_Compat::memzero( $subkey );
1055
+            } catch ( SodiumException $ex ) {
1056 1056
                 $subkey = null;
1057 1057
             }
1058
-            throw new SodiumException('Invalid MAC');
1058
+            throw new SodiumException( 'Invalid MAC' );
1059 1059
         }
1060 1060
 
1061 1061
         /** @var string $m - Decrypted message */
1062 1062
         $m = ParagonIE_Sodium_Core_Util::xorStrings(
1063
-            ParagonIE_Sodium_Core_Util::substr($block0, self::secretbox_xsalsa20poly1305_ZEROBYTES),
1064
-            ParagonIE_Sodium_Core_Util::substr($c, 0, self::secretbox_xsalsa20poly1305_ZEROBYTES)
1063
+            ParagonIE_Sodium_Core_Util::substr( $block0, self::secretbox_xsalsa20poly1305_ZEROBYTES ),
1064
+            ParagonIE_Sodium_Core_Util::substr( $c, 0, self::secretbox_xsalsa20poly1305_ZEROBYTES )
1065 1065
         );
1066
-        if ($clen > self::secretbox_xsalsa20poly1305_ZEROBYTES) {
1066
+        if ( $clen > self::secretbox_xsalsa20poly1305_ZEROBYTES ) {
1067 1067
             // We had more than 1 block, so let's continue to decrypt the rest.
1068 1068
             $m .= ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
1069 1069
                 ParagonIE_Sodium_Core_Util::substr(
1070 1070
                     $c,
1071 1071
                     self::secretbox_xsalsa20poly1305_ZEROBYTES
1072 1072
                 ),
1073
-                ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
1073
+                ParagonIE_Sodium_Core_Util::substr( $nonce, 16, 8 ),
1074 1074
                 1,
1075
-                (string) $subkey
1075
+                (string)$subkey
1076 1076
             );
1077 1077
         }
1078 1078
         return $m;
@@ -1090,25 +1090,25 @@  discard block
 block discarded – undo
1090 1090
      * @throws SodiumException
1091 1091
      * @throws TypeError
1092 1092
      */
1093
-    public static function secretbox_xchacha20poly1305($plaintext, $nonce, $key)
1093
+    public static function secretbox_xchacha20poly1305( $plaintext, $nonce, $key )
1094 1094
     {
1095 1095
         /** @var string $subkey */
1096 1096
         $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
1097
-            ParagonIE_Sodium_Core_Util::substr($nonce, 0, 16),
1097
+            ParagonIE_Sodium_Core_Util::substr( $nonce, 0, 16 ),
1098 1098
             $key
1099 1099
         );
1100
-        $nonceLast = ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);
1100
+        $nonceLast = ParagonIE_Sodium_Core_Util::substr( $nonce, 16, 8 );
1101 1101
 
1102 1102
         /** @var string $block0 */
1103
-        $block0 = str_repeat("\x00", 32);
1103
+        $block0 = str_repeat( "\x00", 32 );
1104 1104
 
1105 1105
         /** @var int $mlen - Length of the plaintext message */
1106
-        $mlen = ParagonIE_Sodium_Core_Util::strlen($plaintext);
1106
+        $mlen = ParagonIE_Sodium_Core_Util::strlen( $plaintext );
1107 1107
         $mlen0 = $mlen;
1108
-        if ($mlen0 > 64 - self::secretbox_xchacha20poly1305_ZEROBYTES) {
1108
+        if ( $mlen0 > 64 - self::secretbox_xchacha20poly1305_ZEROBYTES ) {
1109 1109
             $mlen0 = 64 - self::secretbox_xchacha20poly1305_ZEROBYTES;
1110 1110
         }
1111
-        $block0 .= ParagonIE_Sodium_Core_Util::substr($plaintext, 0, $mlen0);
1111
+        $block0 .= ParagonIE_Sodium_Core_Util::substr( $plaintext, 0, $mlen0 );
1112 1112
 
1113 1113
         /** @var string $block0 */
1114 1114
         $block0 = ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
@@ -1122,7 +1122,7 @@  discard block
 block discarded – undo
1122 1122
             $block0,
1123 1123
             self::secretbox_xchacha20poly1305_ZEROBYTES
1124 1124
         );
1125
-        if ($mlen > $mlen0) {
1125
+        if ( $mlen > $mlen0 ) {
1126 1126
             $c .= ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
1127 1127
                 ParagonIE_Sodium_Core_Util::substr(
1128 1128
                     $plaintext,
@@ -1130,7 +1130,7 @@  discard block
 block discarded – undo
1130 1130
                 ),
1131 1131
                 $nonceLast,
1132 1132
                 $subkey,
1133
-                ParagonIE_Sodium_Core_Util::store64_le(1)
1133
+                ParagonIE_Sodium_Core_Util::store64_le( 1 )
1134 1134
             );
1135 1135
         }
1136 1136
         $state = new ParagonIE_Sodium_Core_Poly1305_State(
@@ -1141,18 +1141,18 @@  discard block
 block discarded – undo
1141 1141
             )
1142 1142
         );
1143 1143
         try {
1144
-            ParagonIE_Sodium_Compat::memzero($block0);
1145
-            ParagonIE_Sodium_Compat::memzero($subkey);
1146
-        } catch (SodiumException $ex) {
1144
+            ParagonIE_Sodium_Compat::memzero( $block0 );
1145
+            ParagonIE_Sodium_Compat::memzero( $subkey );
1146
+        } catch ( SodiumException $ex ) {
1147 1147
             $block0 = null;
1148 1148
             $subkey = null;
1149 1149
         }
1150 1150
 
1151
-        $state->update($c);
1151
+        $state->update( $c );
1152 1152
 
1153 1153
         /** @var string $c - MAC || ciphertext */
1154 1154
         $c = $state->finish() . $c;
1155
-        unset($state);
1155
+        unset( $state );
1156 1156
 
1157 1157
         return $c;
1158 1158
     }
@@ -1169,7 +1169,7 @@  discard block
 block discarded – undo
1169 1169
      * @throws SodiumException
1170 1170
      * @throws TypeError
1171 1171
      */
1172
-    public static function secretbox_xchacha20poly1305_open($ciphertext, $nonce, $key)
1172
+    public static function secretbox_xchacha20poly1305_open( $ciphertext, $nonce, $key )
1173 1173
     {
1174 1174
         /** @var string $mac */
1175 1175
         $mac = ParagonIE_Sodium_Core_Util::substr(
@@ -1185,48 +1185,48 @@  discard block
 block discarded – undo
1185 1185
         );
1186 1186
 
1187 1187
         /** @var int $clen */
1188
-        $clen = ParagonIE_Sodium_Core_Util::strlen($c);
1188
+        $clen = ParagonIE_Sodium_Core_Util::strlen( $c );
1189 1189
 
1190 1190
         /** @var string $subkey */
1191
-        $subkey = ParagonIE_Sodium_Core_HChaCha20::hchacha20($nonce, $key);
1191
+        $subkey = ParagonIE_Sodium_Core_HChaCha20::hchacha20( $nonce, $key );
1192 1192
 
1193 1193
         /** @var string $block0 */
1194 1194
         $block0 = ParagonIE_Sodium_Core_ChaCha20::stream(
1195 1195
             64,
1196
-            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
1196
+            ParagonIE_Sodium_Core_Util::substr( $nonce, 16, 8 ),
1197 1197
             $subkey
1198 1198
         );
1199 1199
         $verified = ParagonIE_Sodium_Core_Poly1305::onetimeauth_verify(
1200 1200
             $mac,
1201 1201
             $c,
1202
-            ParagonIE_Sodium_Core_Util::substr($block0, 0, 32)
1202
+            ParagonIE_Sodium_Core_Util::substr( $block0, 0, 32 )
1203 1203
         );
1204 1204
 
1205
-        if (!$verified) {
1205
+        if ( ! $verified ) {
1206 1206
             try {
1207
-                ParagonIE_Sodium_Compat::memzero($subkey);
1208
-            } catch (SodiumException $ex) {
1207
+                ParagonIE_Sodium_Compat::memzero( $subkey );
1208
+            } catch ( SodiumException $ex ) {
1209 1209
                 $subkey = null;
1210 1210
             }
1211
-            throw new SodiumException('Invalid MAC');
1211
+            throw new SodiumException( 'Invalid MAC' );
1212 1212
         }
1213 1213
 
1214 1214
         /** @var string $m - Decrypted message */
1215 1215
         $m = ParagonIE_Sodium_Core_Util::xorStrings(
1216
-            ParagonIE_Sodium_Core_Util::substr($block0, self::secretbox_xchacha20poly1305_ZEROBYTES),
1217
-            ParagonIE_Sodium_Core_Util::substr($c, 0, self::secretbox_xchacha20poly1305_ZEROBYTES)
1216
+            ParagonIE_Sodium_Core_Util::substr( $block0, self::secretbox_xchacha20poly1305_ZEROBYTES ),
1217
+            ParagonIE_Sodium_Core_Util::substr( $c, 0, self::secretbox_xchacha20poly1305_ZEROBYTES )
1218 1218
         );
1219 1219
 
1220
-        if ($clen > self::secretbox_xchacha20poly1305_ZEROBYTES) {
1220
+        if ( $clen > self::secretbox_xchacha20poly1305_ZEROBYTES ) {
1221 1221
             // We had more than 1 block, so let's continue to decrypt the rest.
1222 1222
             $m .= ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
1223 1223
                 ParagonIE_Sodium_Core_Util::substr(
1224 1224
                     $c,
1225 1225
                     self::secretbox_xchacha20poly1305_ZEROBYTES
1226 1226
                 ),
1227
-                ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
1228
-                (string) $subkey,
1229
-                ParagonIE_Sodium_Core_Util::store64_le(1)
1227
+                ParagonIE_Sodium_Core_Util::substr( $nonce, 16, 8 ),
1228
+                (string)$subkey,
1229
+                ParagonIE_Sodium_Core_Util::store64_le( 1 )
1230 1230
             );
1231 1231
         }
1232 1232
         return $m;
@@ -1238,16 +1238,16 @@  discard block
 block discarded – undo
1238 1238
      * @throws Exception
1239 1239
      * @throws SodiumException
1240 1240
      */
1241
-    public static function secretstream_xchacha20poly1305_init_push($key)
1241
+    public static function secretstream_xchacha20poly1305_init_push( $key )
1242 1242
     {
1243 1243
         # randombytes_buf(out, crypto_secretstream_xchacha20poly1305_HEADERBYTES);
1244
-        $out = random_bytes(24);
1244
+        $out = random_bytes( 24 );
1245 1245
 
1246 1246
         # crypto_core_hchacha20(state->k, out, k, NULL);
1247
-        $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20($out, $key);
1247
+        $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20( $out, $key );
1248 1248
         $state = new ParagonIE_Sodium_Core_SecretStream_State(
1249 1249
             $subkey,
1250
-            ParagonIE_Sodium_Core_Util::substr($out, 16, 8) . str_repeat("\0", 4)
1250
+            ParagonIE_Sodium_Core_Util::substr( $out, 16, 8 ) . str_repeat( "\0", 4 )
1251 1251
         );
1252 1252
 
1253 1253
         # _crypto_secretstream_xchacha20poly1305_counter_reset(state);
@@ -1268,16 +1268,16 @@  discard block
 block discarded – undo
1268 1268
      * @return string Returns a state.
1269 1269
      * @throws Exception
1270 1270
      */
1271
-    public static function secretstream_xchacha20poly1305_init_pull($key, $header)
1271
+    public static function secretstream_xchacha20poly1305_init_pull( $key, $header )
1272 1272
     {
1273 1273
         # crypto_core_hchacha20(state->k, in, k, NULL);
1274 1274
         $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
1275
-            ParagonIE_Sodium_Core_Util::substr($header, 0, 16),
1275
+            ParagonIE_Sodium_Core_Util::substr( $header, 0, 16 ),
1276 1276
             $key
1277 1277
         );
1278 1278
         $state = new ParagonIE_Sodium_Core_SecretStream_State(
1279 1279
             $subkey,
1280
-            ParagonIE_Sodium_Core_Util::substr($header, 16)
1280
+            ParagonIE_Sodium_Core_Util::substr( $header, 16 )
1281 1281
         );
1282 1282
         $state->counterReset();
1283 1283
         # memcpy(STATE_INONCE(state), in + crypto_core_hchacha20_INPUTBYTES,
@@ -1295,19 +1295,19 @@  discard block
 block discarded – undo
1295 1295
      * @return string
1296 1296
      * @throws SodiumException
1297 1297
      */
1298
-    public static function secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0)
1298
+    public static function secretstream_xchacha20poly1305_push( &$state, $msg, $aad = '', $tag = 0 )
1299 1299
     {
1300
-        $st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
1300
+        $st = ParagonIE_Sodium_Core_SecretStream_State::fromString( $state );
1301 1301
         # crypto_onetimeauth_poly1305_state poly1305_state;
1302 1302
         # unsigned char                     block[64U];
1303 1303
         # unsigned char                     slen[8U];
1304 1304
         # unsigned char                    *c;
1305 1305
         # unsigned char                    *mac;
1306 1306
 
1307
-        $msglen = ParagonIE_Sodium_Core_Util::strlen($msg);
1308
-        $aadlen = ParagonIE_Sodium_Core_Util::strlen($aad);
1307
+        $msglen = ParagonIE_Sodium_Core_Util::strlen( $msg );
1308
+        $aadlen = ParagonIE_Sodium_Core_Util::strlen( $aad );
1309 1309
 
1310
-        if ((($msglen + 63) >> 6) > 0xfffffffe) {
1310
+        if ( ( ( $msglen + 63 ) >> 6 ) > 0xfffffffe ) {
1311 1311
             throw new SodiumException(
1312 1312
                 'message cannot be larger than SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX bytes'
1313 1313
             );
@@ -1324,62 +1324,62 @@  discard block
 block discarded – undo
1324 1324
         # crypto_onetimeauth_poly1305_init(&poly1305_state, block);
1325 1325
         # sodium_memzero(block, sizeof block);
1326 1326
         $auth = new ParagonIE_Sodium_Core_Poly1305_State(
1327
-            ParagonIE_Sodium_Core_ChaCha20::ietfStream(32, $st->getCombinedNonce(), $st->getKey())
1327
+            ParagonIE_Sodium_Core_ChaCha20::ietfStream( 32, $st->getCombinedNonce(), $st->getKey() )
1328 1328
         );
1329 1329
 
1330 1330
         # crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen);
1331
-        $auth->update($aad);
1331
+        $auth->update( $aad );
1332 1332
 
1333 1333
         # crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0,
1334 1334
         #     (0x10 - adlen) & 0xf);
1335
-        $auth->update(str_repeat("\0", ((0x10 - $aadlen) & 0xf)));
1335
+        $auth->update( str_repeat( "\0", ( ( 0x10 - $aadlen ) & 0xf ) ) );
1336 1336
 
1337 1337
         # memset(block, 0, sizeof block);
1338 1338
         # block[0] = tag;
1339 1339
         # crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block,
1340 1340
         #                                    state->nonce, 1U, state->k);
1341 1341
         $block = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1342
-            ParagonIE_Sodium_Core_Util::intToChr($tag) . str_repeat("\0", 63),
1342
+            ParagonIE_Sodium_Core_Util::intToChr( $tag ) . str_repeat( "\0", 63 ),
1343 1343
             $st->getCombinedNonce(),
1344 1344
             $st->getKey(),
1345
-            ParagonIE_Sodium_Core_Util::store64_le(1)
1345
+            ParagonIE_Sodium_Core_Util::store64_le( 1 )
1346 1346
         );
1347 1347
 
1348 1348
         # crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block);
1349
-        $auth->update($block);
1349
+        $auth->update( $block );
1350 1350
 
1351 1351
         # out[0] = block[0];
1352
-        $out = $block[0];
1352
+        $out = $block[ 0 ];
1353 1353
         # c = out + (sizeof tag);
1354 1354
         # crypto_stream_chacha20_ietf_xor_ic(c, m, mlen, state->nonce, 2U, state->k);
1355 1355
         $cipher = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1356 1356
             $msg,
1357 1357
             $st->getCombinedNonce(),
1358 1358
             $st->getKey(),
1359
-            ParagonIE_Sodium_Core_Util::store64_le(2)
1359
+            ParagonIE_Sodium_Core_Util::store64_le( 2 )
1360 1360
         );
1361 1361
 
1362 1362
         # crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen);
1363
-        $auth->update($cipher);
1363
+        $auth->update( $cipher );
1364 1364
 
1365 1365
         $out .= $cipher;
1366
-        unset($cipher);
1366
+        unset( $cipher );
1367 1367
 
1368 1368
         # crypto_onetimeauth_poly1305_update
1369 1369
         # (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf);
1370
-        $auth->update(str_repeat("\0", ((0x10 - 64 + $msglen) & 0xf)));
1370
+        $auth->update( str_repeat( "\0", ( ( 0x10 - 64 + $msglen ) & 0xf ) ) );
1371 1371
 
1372 1372
         # STORE64_LE(slen, (uint64_t) adlen);
1373
-        $slen = ParagonIE_Sodium_Core_Util::store64_le($aadlen);
1373
+        $slen = ParagonIE_Sodium_Core_Util::store64_le( $aadlen );
1374 1374
 
1375 1375
         # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1376
-        $auth->update($slen);
1376
+        $auth->update( $slen );
1377 1377
 
1378 1378
         # STORE64_LE(slen, (sizeof block) + mlen);
1379
-        $slen = ParagonIE_Sodium_Core_Util::store64_le(64 + $msglen);
1379
+        $slen = ParagonIE_Sodium_Core_Util::store64_le( 64 + $msglen );
1380 1380
 
1381 1381
         # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1382
-        $auth->update($slen);
1382
+        $auth->update( $slen );
1383 1383
 
1384 1384
         # mac = c + mlen;
1385 1385
         # crypto_onetimeauth_poly1305_final(&poly1305_state, mac);
@@ -1387,12 +1387,12 @@  discard block
 block discarded – undo
1387 1387
         $out .= $mac;
1388 1388
 
1389 1389
         # sodium_memzero(&poly1305_state, sizeof poly1305_state);
1390
-        unset($auth);
1390
+        unset( $auth );
1391 1391
 
1392 1392
 
1393 1393
         # XOR_BUF(STATE_INONCE(state), mac,
1394 1394
         #     crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1395
-        $st->xorNonce($mac);
1395
+        $st->xorNonce( $mac );
1396 1396
 
1397 1397
         # sodium_increment(STATE_COUNTER(state),
1398 1398
         #     crypto_secretstream_xchacha20poly1305_COUNTERBYTES);
@@ -1401,15 +1401,15 @@  discard block
 block discarded – undo
1401 1401
         $state = $st->toString();
1402 1402
 
1403 1403
         /** @var bool $rekey */
1404
-        $rekey = ($tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY) !== 0;
1404
+        $rekey = ( $tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY ) !== 0;
1405 1405
         # if ((tag & crypto_secretstream_xchacha20poly1305_TAG_REKEY) != 0 ||
1406 1406
         #     sodium_is_zero(STATE_COUNTER(state),
1407 1407
         #         crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) {
1408 1408
         #     crypto_secretstream_xchacha20poly1305_rekey(state);
1409 1409
         # }
1410
-        if ($rekey || $st->needsRekey()) {
1410
+        if ( $rekey || $st->needsRekey() ) {
1411 1411
             // DO REKEY
1412
-            self::secretstream_xchacha20poly1305_rekey($state);
1412
+            self::secretstream_xchacha20poly1305_rekey( $state );
1413 1413
         }
1414 1414
         # if (outlen_p != NULL) {
1415 1415
         #     *outlen_p = crypto_secretstream_xchacha20poly1305_ABYTES + mlen;
@@ -1424,19 +1424,19 @@  discard block
 block discarded – undo
1424 1424
      * @return bool|array{0: string, 1: int}
1425 1425
      * @throws SodiumException
1426 1426
      */
1427
-    public static function secretstream_xchacha20poly1305_pull(&$state, $cipher, $aad = '')
1427
+    public static function secretstream_xchacha20poly1305_pull( &$state, $cipher, $aad = '' )
1428 1428
     {
1429
-        $st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
1429
+        $st = ParagonIE_Sodium_Core_SecretStream_State::fromString( $state );
1430 1430
 
1431
-        $cipherlen = ParagonIE_Sodium_Core_Util::strlen($cipher);
1431
+        $cipherlen = ParagonIE_Sodium_Core_Util::strlen( $cipher );
1432 1432
         #     mlen = inlen - crypto_secretstream_xchacha20poly1305_ABYTES;
1433 1433
         $msglen = $cipherlen - ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES;
1434
-        $aadlen = ParagonIE_Sodium_Core_Util::strlen($aad);
1434
+        $aadlen = ParagonIE_Sodium_Core_Util::strlen( $aad );
1435 1435
 
1436 1436
         #     if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) {
1437 1437
         #         sodium_misuse();
1438 1438
         #     }
1439
-        if ((($msglen + 63) >> 6) > 0xfffffffe) {
1439
+        if ( ( ( $msglen + 63 ) >> 6 ) > 0xfffffffe ) {
1440 1440
             throw new SodiumException(
1441 1441
                 'message cannot be larger than SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX bytes'
1442 1442
             );
@@ -1446,15 +1446,15 @@  discard block
 block discarded – undo
1446 1446
         #     crypto_onetimeauth_poly1305_init(&poly1305_state, block);
1447 1447
         #     sodium_memzero(block, sizeof block);
1448 1448
         $auth = new ParagonIE_Sodium_Core_Poly1305_State(
1449
-            ParagonIE_Sodium_Core_ChaCha20::ietfStream(32, $st->getCombinedNonce(), $st->getKey())
1449
+            ParagonIE_Sodium_Core_ChaCha20::ietfStream( 32, $st->getCombinedNonce(), $st->getKey() )
1450 1450
         );
1451 1451
 
1452 1452
         #     crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen);
1453
-        $auth->update($aad);
1453
+        $auth->update( $aad );
1454 1454
 
1455 1455
         #     crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0,
1456 1456
         #         (0x10 - adlen) & 0xf);
1457
-        $auth->update(str_repeat("\0", ((0x10 - $aadlen) & 0xf)));
1457
+        $auth->update( str_repeat( "\0", ( ( 0x10 - $aadlen ) & 0xf ) ) );
1458 1458
 
1459 1459
 
1460 1460
         #     memset(block, 0, sizeof block);
@@ -1462,36 +1462,36 @@  discard block
 block discarded – undo
1462 1462
         #     crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block,
1463 1463
         #                                        state->nonce, 1U, state->k);
1464 1464
         $block = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1465
-            $cipher[0] . str_repeat("\0", 63),
1465
+            $cipher[ 0 ] . str_repeat( "\0", 63 ),
1466 1466
             $st->getCombinedNonce(),
1467 1467
             $st->getKey(),
1468
-            ParagonIE_Sodium_Core_Util::store64_le(1)
1468
+            ParagonIE_Sodium_Core_Util::store64_le( 1 )
1469 1469
         );
1470 1470
         #     tag = block[0];
1471 1471
         #     block[0] = in[0];
1472 1472
         #     crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block);
1473
-        $tag = ParagonIE_Sodium_Core_Util::chrToInt($block[0]);
1474
-        $block[0] = $cipher[0];
1475
-        $auth->update($block);
1473
+        $tag = ParagonIE_Sodium_Core_Util::chrToInt( $block[ 0 ] );
1474
+        $block[ 0 ] = $cipher[ 0 ];
1475
+        $auth->update( $block );
1476 1476
 
1477 1477
 
1478 1478
         #     c = in + (sizeof tag);
1479 1479
         #     crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen);
1480
-        $auth->update(ParagonIE_Sodium_Core_Util::substr($cipher, 1, $msglen));
1480
+        $auth->update( ParagonIE_Sodium_Core_Util::substr( $cipher, 1, $msglen ) );
1481 1481
 
1482 1482
         #     crypto_onetimeauth_poly1305_update
1483 1483
         #     (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf);
1484
-        $auth->update(str_repeat("\0", ((0x10 - 64 + $msglen) & 0xf)));
1484
+        $auth->update( str_repeat( "\0", ( ( 0x10 - 64 + $msglen ) & 0xf ) ) );
1485 1485
 
1486 1486
         #     STORE64_LE(slen, (uint64_t) adlen);
1487 1487
         #     crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1488
-        $slen = ParagonIE_Sodium_Core_Util::store64_le($aadlen);
1489
-        $auth->update($slen);
1488
+        $slen = ParagonIE_Sodium_Core_Util::store64_le( $aadlen );
1489
+        $auth->update( $slen );
1490 1490
 
1491 1491
         #     STORE64_LE(slen, (sizeof block) + mlen);
1492 1492
         #     crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1493
-        $slen = ParagonIE_Sodium_Core_Util::store64_le(64 + $msglen);
1494
-        $auth->update($slen);
1493
+        $slen = ParagonIE_Sodium_Core_Util::store64_le( 64 + $msglen );
1494
+        $auth->update( $slen );
1495 1495
 
1496 1496
         #     crypto_onetimeauth_poly1305_final(&poly1305_state, mac);
1497 1497
         #     sodium_memzero(&poly1305_state, sizeof poly1305_state);
@@ -1503,22 +1503,22 @@  discard block
 block discarded – undo
1503 1503
         #         return -1;
1504 1504
         #     }
1505 1505
 
1506
-        $stored = ParagonIE_Sodium_Core_Util::substr($cipher, $msglen + 1, 16);
1507
-        if (!ParagonIE_Sodium_Core_Util::hashEquals($mac, $stored)) {
1506
+        $stored = ParagonIE_Sodium_Core_Util::substr( $cipher, $msglen + 1, 16 );
1507
+        if ( ! ParagonIE_Sodium_Core_Util::hashEquals( $mac, $stored ) ) {
1508 1508
             return false;
1509 1509
         }
1510 1510
 
1511 1511
         #     crypto_stream_chacha20_ietf_xor_ic(m, c, mlen, state->nonce, 2U, state->k);
1512 1512
         $out = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1513
-            ParagonIE_Sodium_Core_Util::substr($cipher, 1, $msglen),
1513
+            ParagonIE_Sodium_Core_Util::substr( $cipher, 1, $msglen ),
1514 1514
             $st->getCombinedNonce(),
1515 1515
             $st->getKey(),
1516
-            ParagonIE_Sodium_Core_Util::store64_le(2)
1516
+            ParagonIE_Sodium_Core_Util::store64_le( 2 )
1517 1517
         );
1518 1518
 
1519 1519
         #     XOR_BUF(STATE_INONCE(state), mac,
1520 1520
         #         crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1521
-        $st->xorNonce($mac);
1521
+        $st->xorNonce( $mac );
1522 1522
 
1523 1523
         #     sodium_increment(STATE_COUNTER(state),
1524 1524
         #         crypto_secretstream_xchacha20poly1305_COUNTERBYTES);
@@ -1534,12 +1534,12 @@  discard block
 block discarded – undo
1534 1534
         $state = $st->toString();
1535 1535
 
1536 1536
         /** @var bool $rekey */
1537
-        $rekey = ($tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY) !== 0;
1538
-        if ($rekey || $st->needsRekey()) {
1537
+        $rekey = ( $tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY ) !== 0;
1538
+        if ( $rekey || $st->needsRekey() ) {
1539 1539
             // DO REKEY
1540
-            self::secretstream_xchacha20poly1305_rekey($state);
1540
+            self::secretstream_xchacha20poly1305_rekey( $state );
1541 1541
         }
1542
-        return array($out, $tag);
1542
+        return array( $out, $tag );
1543 1543
     }
1544 1544
 
1545 1545
     /**
@@ -1547,9 +1547,9 @@  discard block
 block discarded – undo
1547 1547
      * @return void
1548 1548
      * @throws SodiumException
1549 1549
      */
1550
-    public static function secretstream_xchacha20poly1305_rekey(&$state)
1550
+    public static function secretstream_xchacha20poly1305_rekey( &$state )
1551 1551
     {
1552
-        $st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
1552
+        $st = ParagonIE_Sodium_Core_SecretStream_State::fromString( $state );
1553 1553
         # unsigned char new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES +
1554 1554
         # crypto_secretstream_xchacha20poly1305_INONCEBYTES];
1555 1555
         # size_t        i;
@@ -1562,18 +1562,18 @@  discard block
 block discarded – undo
1562 1562
         #     new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + i] =
1563 1563
         #         STATE_INONCE(state)[i];
1564 1564
         # }
1565
-        $new_key_and_inonce .= ParagonIE_Sodium_Core_Util::substR($st->getNonce(), 0, 8);
1565
+        $new_key_and_inonce .= ParagonIE_Sodium_Core_Util::substR( $st->getNonce(), 0, 8 );
1566 1566
 
1567 1567
         # crypto_stream_chacha20_ietf_xor(new_key_and_inonce, new_key_and_inonce,
1568 1568
         #                                 sizeof new_key_and_inonce,
1569 1569
         #                                 state->nonce, state->k);
1570 1570
 
1571
-        $st->rekey(ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1571
+        $st->rekey( ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1572 1572
             $new_key_and_inonce,
1573 1573
             $st->getCombinedNonce(),
1574 1574
             $st->getKey(),
1575
-            ParagonIE_Sodium_Core_Util::store64_le(0)
1576
-        ));
1575
+            ParagonIE_Sodium_Core_Util::store64_le( 0 )
1576
+        ) );
1577 1577
 
1578 1578
         # for (i = 0U; i < crypto_stream_chacha20_ietf_KEYBYTES; i++) {
1579 1579
         #     state->k[i] = new_key_and_inonce[i];
@@ -1599,9 +1599,9 @@  discard block
 block discarded – undo
1599 1599
      * @throws SodiumException
1600 1600
      * @throws TypeError
1601 1601
      */
1602
-    public static function sign_detached($message, $sk)
1602
+    public static function sign_detached( $message, $sk )
1603 1603
     {
1604
-        return ParagonIE_Sodium_Core_Ed25519::sign_detached($message, $sk);
1604
+        return ParagonIE_Sodium_Core_Ed25519::sign_detached( $message, $sk );
1605 1605
     }
1606 1606
 
1607 1607
     /**
@@ -1615,9 +1615,9 @@  discard block
 block discarded – undo
1615 1615
      * @throws SodiumException
1616 1616
      * @throws TypeError
1617 1617
      */
1618
-    public static function sign($message, $sk)
1618
+    public static function sign( $message, $sk )
1619 1619
     {
1620
-        return ParagonIE_Sodium_Core_Ed25519::sign($message, $sk);
1620
+        return ParagonIE_Sodium_Core_Ed25519::sign( $message, $sk );
1621 1621
     }
1622 1622
 
1623 1623
     /**
@@ -1631,9 +1631,9 @@  discard block
 block discarded – undo
1631 1631
      * @throws SodiumException
1632 1632
      * @throws TypeError
1633 1633
      */
1634
-    public static function sign_open($signedMessage, $pk)
1634
+    public static function sign_open( $signedMessage, $pk )
1635 1635
     {
1636
-        return ParagonIE_Sodium_Core_Ed25519::sign_open($signedMessage, $pk);
1636
+        return ParagonIE_Sodium_Core_Ed25519::sign_open( $signedMessage, $pk );
1637 1637
     }
1638 1638
 
1639 1639
     /**
@@ -1648,8 +1648,8 @@  discard block
 block discarded – undo
1648 1648
      * @throws SodiumException
1649 1649
      * @throws TypeError
1650 1650
      */
1651
-    public static function sign_verify_detached($signature, $message, $pk)
1651
+    public static function sign_verify_detached( $signature, $message, $pk )
1652 1652
     {
1653
-        return ParagonIE_Sodium_Core_Ed25519::verify_detached($signature, $message, $pk);
1653
+        return ParagonIE_Sodium_Core_Ed25519::verify_detached( $signature, $message, $pk );
1654 1654
     }
1655 1655
 }
Please login to merge, or discard this patch.
Braces   +35 added lines, -70 removed lines patch added patch discarded remove patch
@@ -12,8 +12,7 @@  discard block
 block discarded – undo
12 12
  * If you are using this library, you should be using
13 13
  * ParagonIE_Sodium_Compat in your code, not this class.
14 14
  */
15
-abstract class ParagonIE_Sodium_Crypto
16
-{
15
+abstract class ParagonIE_Sodium_Crypto {
17 16
     const aead_chacha20poly1305_KEYBYTES = 32;
18 17
     const aead_chacha20poly1305_NSECBYTES = 0;
19 18
     const aead_chacha20poly1305_NPUBBYTES = 8;
@@ -381,8 +380,7 @@  discard block
 block discarded – undo
381 380
      * @return string
382 381
      * @throws TypeError
383 382
      */
384
-    public static function auth($message, $key)
385
-    {
383
+    public static function auth($message, $key) {
386 384
         return ParagonIE_Sodium_Core_Util::substr(
387 385
             hash_hmac('sha512', $message, $key, true),
388 386
             0,
@@ -402,8 +400,7 @@  discard block
 block discarded – undo
402 400
      * @throws SodiumException
403 401
      * @throws TypeError
404 402
      */
405
-    public static function auth_verify($mac, $message, $key)
406
-    {
403
+    public static function auth_verify($mac, $message, $key) {
407 404
         return ParagonIE_Sodium_Core_Util::hashEquals(
408 405
             $mac,
409 406
             self::auth($message, $key)
@@ -422,8 +419,7 @@  discard block
 block discarded – undo
422 419
      * @throws SodiumException
423 420
      * @throws TypeError
424 421
      */
425
-    public static function box($plaintext, $nonce, $keypair)
426
-    {
422
+    public static function box($plaintext, $nonce, $keypair) {
427 423
         $c = self::secretbox(
428 424
             $plaintext,
429 425
             $nonce,
@@ -446,8 +442,7 @@  discard block
 block discarded – undo
446 442
      * @throws SodiumException
447 443
      * @throws TypeError
448 444
      */
449
-    public static function box_seal($message, $publicKey)
450
-    {
445
+    public static function box_seal($message, $publicKey) {
451 446
         /** @var string $ephemeralKeypair */
452 447
         $ephemeralKeypair = self::box_keypair();
453 448
 
@@ -492,8 +487,7 @@  discard block
 block discarded – undo
492 487
      * @throws SodiumException
493 488
      * @throws TypeError
494 489
      */
495
-    public static function box_seal_open($message, $keypair)
496
-    {
490
+    public static function box_seal_open($message, $keypair) {
497 491
         /** @var string $ephemeralPK */
498 492
         $ephemeralPK = ParagonIE_Sodium_Core_Util::substr($message, 0, 32);
499 493
 
@@ -541,8 +535,7 @@  discard block
 block discarded – undo
541 535
      * @throws SodiumException
542 536
      * @throws TypeError
543 537
      */
544
-    public static function box_beforenm($sk, $pk)
545
-    {
538
+    public static function box_beforenm($sk, $pk) {
546 539
         return ParagonIE_Sodium_Core_HSalsa20::hsalsa20(
547 540
             str_repeat("\x00", 16),
548 541
             self::scalarmult($sk, $pk)
@@ -557,8 +550,7 @@  discard block
 block discarded – undo
557 550
      * @throws SodiumException
558 551
      * @throws TypeError
559 552
      */
560
-    public static function box_keypair()
561
-    {
553
+    public static function box_keypair() {
562 554
         $sKey = random_bytes(32);
563 555
         $pKey = self::scalarmult_base($sKey);
564 556
         return $sKey . $pKey;
@@ -570,8 +562,7 @@  discard block
 block discarded – undo
570 562
      * @throws SodiumException
571 563
      * @throws TypeError
572 564
      */
573
-    public static function box_seed_keypair($seed)
574
-    {
565
+    public static function box_seed_keypair($seed) {
575 566
         $sKey = ParagonIE_Sodium_Core_Util::substr(
576 567
             hash('sha512', $seed, true),
577 568
             0,
@@ -589,8 +580,7 @@  discard block
 block discarded – undo
589 580
      * @return string
590 581
      * @throws TypeError
591 582
      */
592
-    public static function box_keypair_from_secretkey_and_publickey($sKey, $pKey)
593
-    {
583
+    public static function box_keypair_from_secretkey_and_publickey($sKey, $pKey) {
594 584
         return ParagonIE_Sodium_Core_Util::substr($sKey, 0, 32) .
595 585
             ParagonIE_Sodium_Core_Util::substr($pKey, 0, 32);
596 586
     }
@@ -603,8 +593,7 @@  discard block
 block discarded – undo
603 593
      * @throws RangeException
604 594
      * @throws TypeError
605 595
      */
606
-    public static function box_secretkey($keypair)
607
-    {
596
+    public static function box_secretkey($keypair) {
608 597
         if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== 64) {
609 598
             throw new RangeException(
610 599
                 'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES bytes long.'
@@ -621,8 +610,7 @@  discard block
 block discarded – undo
621 610
      * @throws RangeException
622 611
      * @throws TypeError
623 612
      */
624
-    public static function box_publickey($keypair)
625
-    {
613
+    public static function box_publickey($keypair) {
626 614
         if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
627 615
             throw new RangeException(
628 616
                 'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES bytes long.'
@@ -640,8 +628,7 @@  discard block
 block discarded – undo
640 628
      * @throws SodiumException
641 629
      * @throws TypeError
642 630
      */
643
-    public static function box_publickey_from_secretkey($sKey)
644
-    {
631
+    public static function box_publickey_from_secretkey($sKey) {
645 632
         if (ParagonIE_Sodium_Core_Util::strlen($sKey) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_SECRETKEYBYTES) {
646 633
             throw new RangeException(
647 634
                 'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_SECRETKEYBYTES bytes long.'
@@ -662,8 +649,7 @@  discard block
 block discarded – undo
662 649
      * @throws SodiumException
663 650
      * @throws TypeError
664 651
      */
665
-    public static function box_open($ciphertext, $nonce, $keypair)
666
-    {
652
+    public static function box_open($ciphertext, $nonce, $keypair) {
667 653
         return self::secretbox_open(
668 654
             $ciphertext,
669 655
             $nonce,
@@ -687,8 +673,7 @@  discard block
 block discarded – undo
687 673
      * @throws SodiumException
688 674
      * @throws TypeError
689 675
      */
690
-    public static function generichash($message, $key = '', $outlen = 32)
691
-    {
676
+    public static function generichash($message, $key = '', $outlen = 32) {
692 677
         // This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
693 678
         ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
694 679
 
@@ -728,8 +713,7 @@  discard block
 block discarded – undo
728 713
      * @throws SodiumException
729 714
      * @throws TypeError
730 715
      */
731
-    public static function generichash_final($ctx, $outlen = 32)
732
-    {
716
+    public static function generichash_final($ctx, $outlen = 32) {
733 717
         if (!is_string($ctx)) {
734 718
             throw new TypeError('Context must be a string');
735 719
         }
@@ -758,8 +742,7 @@  discard block
 block discarded – undo
758 742
      * @throws SodiumException
759 743
      * @throws TypeError
760 744
      */
761
-    public static function generichash_init($key = '', $outputLength = 32)
762
-    {
745
+    public static function generichash_init($key = '', $outputLength = 32) {
763 746
         // This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
764 747
         ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
765 748
 
@@ -835,8 +818,7 @@  discard block
 block discarded – undo
835 818
      * @throws SodiumException
836 819
      * @throws TypeError
837 820
      */
838
-    public static function generichash_update($ctx, $message)
839
-    {
821
+    public static function generichash_update($ctx, $message) {
840 822
         // This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
841 823
         ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
842 824
 
@@ -864,8 +846,7 @@  discard block
 block discarded – undo
864 846
      * @throws SodiumException
865 847
      * @throws TypeError
866 848
      */
867
-    public static function keyExchange($my_sk, $their_pk, $client_pk, $server_pk)
868
-    {
849
+    public static function keyExchange($my_sk, $their_pk, $client_pk, $server_pk) {
869 850
         return ParagonIE_Sodium_Compat::crypto_generichash(
870 851
             ParagonIE_Sodium_Compat::crypto_scalarmult($my_sk, $their_pk) .
871 852
             $client_pk .
@@ -885,8 +866,7 @@  discard block
 block discarded – undo
885 866
      * @throws SodiumException
886 867
      * @throws TypeError
887 868
      */
888
-    public static function scalarmult($sKey, $pKey)
889
-    {
869
+    public static function scalarmult($sKey, $pKey) {
890 870
         $q = ParagonIE_Sodium_Core_X25519::crypto_scalarmult_curve25519_ref10($sKey, $pKey);
891 871
         self::scalarmult_throw_if_zero($q);
892 872
         return $q;
@@ -902,8 +882,7 @@  discard block
 block discarded – undo
902 882
      * @throws SodiumException
903 883
      * @throws TypeError
904 884
      */
905
-    public static function scalarmult_base($secret)
906
-    {
885
+    public static function scalarmult_base($secret) {
907 886
         $q = ParagonIE_Sodium_Core_X25519::crypto_scalarmult_curve25519_ref10_base($secret);
908 887
         self::scalarmult_throw_if_zero($q);
909 888
         return $q;
@@ -917,8 +896,7 @@  discard block
 block discarded – undo
917 896
      * @throws SodiumException
918 897
      * @throws TypeError
919 898
      */
920
-    protected static function scalarmult_throw_if_zero($q)
921
-    {
899
+    protected static function scalarmult_throw_if_zero($q) {
922 900
         $d = 0;
923 901
         for ($i = 0; $i < self::box_curve25519xsalsa20poly1305_SECRETKEYBYTES; ++$i) {
924 902
             $d |= ParagonIE_Sodium_Core_Util::chrToInt($q[$i]);
@@ -942,8 +920,7 @@  discard block
 block discarded – undo
942 920
      * @throws SodiumException
943 921
      * @throws TypeError
944 922
      */
945
-    public static function secretbox($plaintext, $nonce, $key)
946
-    {
923
+    public static function secretbox($plaintext, $nonce, $key) {
947 924
         /** @var string $subkey */
948 925
         $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);
949 926
 
@@ -1017,8 +994,7 @@  discard block
 block discarded – undo
1017 994
      * @throws SodiumException
1018 995
      * @throws TypeError
1019 996
      */
1020
-    public static function secretbox_open($ciphertext, $nonce, $key)
1021
-    {
997
+    public static function secretbox_open($ciphertext, $nonce, $key) {
1022 998
         /** @var string $mac */
1023 999
         $mac = ParagonIE_Sodium_Core_Util::substr(
1024 1000
             $ciphertext,
@@ -1090,8 +1066,7 @@  discard block
 block discarded – undo
1090 1066
      * @throws SodiumException
1091 1067
      * @throws TypeError
1092 1068
      */
1093
-    public static function secretbox_xchacha20poly1305($plaintext, $nonce, $key)
1094
-    {
1069
+    public static function secretbox_xchacha20poly1305($plaintext, $nonce, $key) {
1095 1070
         /** @var string $subkey */
1096 1071
         $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
1097 1072
             ParagonIE_Sodium_Core_Util::substr($nonce, 0, 16),
@@ -1169,8 +1144,7 @@  discard block
 block discarded – undo
1169 1144
      * @throws SodiumException
1170 1145
      * @throws TypeError
1171 1146
      */
1172
-    public static function secretbox_xchacha20poly1305_open($ciphertext, $nonce, $key)
1173
-    {
1147
+    public static function secretbox_xchacha20poly1305_open($ciphertext, $nonce, $key) {
1174 1148
         /** @var string $mac */
1175 1149
         $mac = ParagonIE_Sodium_Core_Util::substr(
1176 1150
             $ciphertext,
@@ -1238,8 +1212,7 @@  discard block
 block discarded – undo
1238 1212
      * @throws Exception
1239 1213
      * @throws SodiumException
1240 1214
      */
1241
-    public static function secretstream_xchacha20poly1305_init_push($key)
1242
-    {
1215
+    public static function secretstream_xchacha20poly1305_init_push($key) {
1243 1216
         # randombytes_buf(out, crypto_secretstream_xchacha20poly1305_HEADERBYTES);
1244 1217
         $out = random_bytes(24);
1245 1218
 
@@ -1268,8 +1241,7 @@  discard block
 block discarded – undo
1268 1241
      * @return string Returns a state.
1269 1242
      * @throws Exception
1270 1243
      */
1271
-    public static function secretstream_xchacha20poly1305_init_pull($key, $header)
1272
-    {
1244
+    public static function secretstream_xchacha20poly1305_init_pull($key, $header) {
1273 1245
         # crypto_core_hchacha20(state->k, in, k, NULL);
1274 1246
         $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
1275 1247
             ParagonIE_Sodium_Core_Util::substr($header, 0, 16),
@@ -1295,8 +1267,7 @@  discard block
 block discarded – undo
1295 1267
      * @return string
1296 1268
      * @throws SodiumException
1297 1269
      */
1298
-    public static function secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0)
1299
-    {
1270
+    public static function secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0) {
1300 1271
         $st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
1301 1272
         # crypto_onetimeauth_poly1305_state poly1305_state;
1302 1273
         # unsigned char                     block[64U];
@@ -1424,8 +1395,7 @@  discard block
 block discarded – undo
1424 1395
      * @return bool|array{0: string, 1: int}
1425 1396
      * @throws SodiumException
1426 1397
      */
1427
-    public static function secretstream_xchacha20poly1305_pull(&$state, $cipher, $aad = '')
1428
-    {
1398
+    public static function secretstream_xchacha20poly1305_pull(&$state, $cipher, $aad = '') {
1429 1399
         $st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
1430 1400
 
1431 1401
         $cipherlen = ParagonIE_Sodium_Core_Util::strlen($cipher);
@@ -1547,8 +1517,7 @@  discard block
 block discarded – undo
1547 1517
      * @return void
1548 1518
      * @throws SodiumException
1549 1519
      */
1550
-    public static function secretstream_xchacha20poly1305_rekey(&$state)
1551
-    {
1520
+    public static function secretstream_xchacha20poly1305_rekey(&$state) {
1552 1521
         $st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
1553 1522
         # unsigned char new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES +
1554 1523
         # crypto_secretstream_xchacha20poly1305_INONCEBYTES];
@@ -1599,8 +1568,7 @@  discard block
 block discarded – undo
1599 1568
      * @throws SodiumException
1600 1569
      * @throws TypeError
1601 1570
      */
1602
-    public static function sign_detached($message, $sk)
1603
-    {
1571
+    public static function sign_detached($message, $sk) {
1604 1572
         return ParagonIE_Sodium_Core_Ed25519::sign_detached($message, $sk);
1605 1573
     }
1606 1574
 
@@ -1615,8 +1583,7 @@  discard block
 block discarded – undo
1615 1583
      * @throws SodiumException
1616 1584
      * @throws TypeError
1617 1585
      */
1618
-    public static function sign($message, $sk)
1619
-    {
1586
+    public static function sign($message, $sk) {
1620 1587
         return ParagonIE_Sodium_Core_Ed25519::sign($message, $sk);
1621 1588
     }
1622 1589
 
@@ -1631,8 +1598,7 @@  discard block
 block discarded – undo
1631 1598
      * @throws SodiumException
1632 1599
      * @throws TypeError
1633 1600
      */
1634
-    public static function sign_open($signedMessage, $pk)
1635
-    {
1601
+    public static function sign_open($signedMessage, $pk) {
1636 1602
         return ParagonIE_Sodium_Core_Ed25519::sign_open($signedMessage, $pk);
1637 1603
     }
1638 1604
 
@@ -1648,8 +1614,7 @@  discard block
 block discarded – undo
1648 1614
      * @throws SodiumException
1649 1615
      * @throws TypeError
1650 1616
      */
1651
-    public static function sign_verify_detached($signature, $message, $pk)
1652
-    {
1617
+    public static function sign_verify_detached($signature, $message, $pk) {
1653 1618
         return ParagonIE_Sodium_Core_Ed25519::verify_detached($signature, $message, $pk);
1654 1619
     }
1655 1620
 }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/File.php 3 patches
Indentation   +1532 added lines, -1532 removed lines patch added patch discarded remove patch
@@ -1,1560 +1,1560 @@
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_File', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 /**
7 7
  * Class ParagonIE_Sodium_File
8 8
  */
9 9
 class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
10 10
 {
11
-    /* PHP's default buffer size is 8192 for fread()/fwrite(). */
12
-    const BUFFER_SIZE = 8192;
13
-
14
-    /**
15
-     * Box a file (rather than a string). Uses less memory than
16
-     * ParagonIE_Sodium_Compat::crypto_box(), but produces
17
-     * the same result.
18
-     *
19
-     * @param string $inputFile  Absolute path to a file on the filesystem
20
-     * @param string $outputFile Absolute path to a file on the filesystem
21
-     * @param string $nonce      Number to be used only once
22
-     * @param string $keyPair    ECDH secret key and ECDH public key concatenated
23
-     *
24
-     * @return bool
25
-     * @throws SodiumException
26
-     * @throws TypeError
27
-     */
28
-    public static function box($inputFile, $outputFile, $nonce, $keyPair)
29
-    {
30
-        /* Type checks: */
31
-        if (!is_string($inputFile)) {
32
-            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
33
-        }
34
-        if (!is_string($outputFile)) {
35
-            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
36
-        }
37
-        if (!is_string($nonce)) {
38
-            throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
39
-        }
40
-
41
-        /* Input validation: */
42
-        if (!is_string($keyPair)) {
43
-            throw new TypeError('Argument 4 must be a string, ' . gettype($keyPair) . ' given.');
44
-        }
45
-        if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_NONCEBYTES) {
46
-            throw new TypeError('Argument 3 must be CRYPTO_BOX_NONCEBYTES bytes');
47
-        }
48
-        if (self::strlen($keyPair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
49
-            throw new TypeError('Argument 4 must be CRYPTO_BOX_KEYPAIRBYTES bytes');
50
-        }
51
-
52
-        /** @var int $size */
53
-        $size = filesize($inputFile);
54
-        if (!is_int($size)) {
55
-            throw new SodiumException('Could not obtain the file size');
56
-        }
57
-
58
-        /** @var resource $ifp */
59
-        $ifp = fopen($inputFile, 'rb');
60
-        if (!is_resource($ifp)) {
61
-            throw new SodiumException('Could not open input file for reading');
62
-        }
63
-
64
-        /** @var resource $ofp */
65
-        $ofp = fopen($outputFile, 'wb');
66
-        if (!is_resource($ofp)) {
67
-            fclose($ifp);
68
-            throw new SodiumException('Could not open output file for writing');
69
-        }
70
-
71
-        $res = self::box_encrypt($ifp, $ofp, $size, $nonce, $keyPair);
72
-        fclose($ifp);
73
-        fclose($ofp);
74
-        return $res;
75
-    }
76
-
77
-    /**
78
-     * Open a boxed file (rather than a string). Uses less memory than
79
-     * ParagonIE_Sodium_Compat::crypto_box_open(), but produces
80
-     * the same result.
81
-     *
82
-     * Warning: Does not protect against TOCTOU attacks. You should
83
-     * just load the file into memory and use crypto_box_open() if
84
-     * you are worried about those.
85
-     *
86
-     * @param string $inputFile
87
-     * @param string $outputFile
88
-     * @param string $nonce
89
-     * @param string $keypair
90
-     * @return bool
91
-     * @throws SodiumException
92
-     * @throws TypeError
93
-     */
94
-    public static function box_open($inputFile, $outputFile, $nonce, $keypair)
95
-    {
96
-        /* Type checks: */
97
-        if (!is_string($inputFile)) {
98
-            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
99
-        }
100
-        if (!is_string($outputFile)) {
101
-            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
102
-        }
103
-        if (!is_string($nonce)) {
104
-            throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
105
-        }
106
-        if (!is_string($keypair)) {
107
-            throw new TypeError('Argument 4 must be a string, ' . gettype($keypair) . ' given.');
108
-        }
109
-
110
-        /* Input validation: */
111
-        if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_NONCEBYTES) {
112
-            throw new TypeError('Argument 4 must be CRYPTO_BOX_NONCEBYTES bytes');
113
-        }
114
-        if (self::strlen($keypair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
115
-            throw new TypeError('Argument 4 must be CRYPTO_BOX_KEYPAIRBYTES bytes');
116
-        }
117
-
118
-        /** @var int $size */
119
-        $size = filesize($inputFile);
120
-        if (!is_int($size)) {
121
-            throw new SodiumException('Could not obtain the file size');
122
-        }
123
-
124
-        /** @var resource $ifp */
125
-        $ifp = fopen($inputFile, 'rb');
126
-        if (!is_resource($ifp)) {
127
-            throw new SodiumException('Could not open input file for reading');
128
-        }
129
-
130
-        /** @var resource $ofp */
131
-        $ofp = fopen($outputFile, 'wb');
132
-        if (!is_resource($ofp)) {
133
-            fclose($ifp);
134
-            throw new SodiumException('Could not open output file for writing');
135
-        }
136
-
137
-        $res = self::box_decrypt($ifp, $ofp, $size, $nonce, $keypair);
138
-        fclose($ifp);
139
-        fclose($ofp);
140
-        try {
141
-            ParagonIE_Sodium_Compat::memzero($nonce);
142
-            ParagonIE_Sodium_Compat::memzero($ephKeypair);
143
-        } catch (SodiumException $ex) {
144
-            if (isset($ephKeypair)) {
145
-                unset($ephKeypair);
146
-            }
147
-        }
148
-        return $res;
149
-    }
150
-
151
-    /**
152
-     * Seal a file (rather than a string). Uses less memory than
153
-     * ParagonIE_Sodium_Compat::crypto_box_seal(), but produces
154
-     * the same result.
155
-     *
156
-     * @param string $inputFile  Absolute path to a file on the filesystem
157
-     * @param string $outputFile Absolute path to a file on the filesystem
158
-     * @param string $publicKey  ECDH public key
159
-     *
160
-     * @return bool
161
-     * @throws SodiumException
162
-     * @throws TypeError
163
-     */
164
-    public static function box_seal($inputFile, $outputFile, $publicKey)
165
-    {
166
-        /* Type checks: */
167
-        if (!is_string($inputFile)) {
168
-            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
169
-        }
170
-        if (!is_string($outputFile)) {
171
-            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
172
-        }
173
-        if (!is_string($publicKey)) {
174
-            throw new TypeError('Argument 3 must be a string, ' . gettype($publicKey) . ' given.');
175
-        }
176
-
177
-        /* Input validation: */
178
-        if (self::strlen($publicKey) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES) {
179
-            throw new TypeError('Argument 3 must be CRYPTO_BOX_PUBLICKEYBYTES bytes');
180
-        }
181
-
182
-        /** @var int $size */
183
-        $size = filesize($inputFile);
184
-        if (!is_int($size)) {
185
-            throw new SodiumException('Could not obtain the file size');
186
-        }
187
-
188
-        /** @var resource $ifp */
189
-        $ifp = fopen($inputFile, 'rb');
190
-        if (!is_resource($ifp)) {
191
-            throw new SodiumException('Could not open input file for reading');
192
-        }
193
-
194
-        /** @var resource $ofp */
195
-        $ofp = fopen($outputFile, 'wb');
196
-        if (!is_resource($ofp)) {
197
-            fclose($ifp);
198
-            throw new SodiumException('Could not open output file for writing');
199
-        }
200
-
201
-        /** @var string $ephKeypair */
202
-        $ephKeypair = ParagonIE_Sodium_Compat::crypto_box_keypair();
203
-
204
-        /** @var string $msgKeypair */
205
-        $msgKeypair = ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey(
206
-            ParagonIE_Sodium_Compat::crypto_box_secretkey($ephKeypair),
207
-            $publicKey
208
-        );
209
-
210
-        /** @var string $ephemeralPK */
211
-        $ephemeralPK = ParagonIE_Sodium_Compat::crypto_box_publickey($ephKeypair);
212
-
213
-        /** @var string $nonce */
214
-        $nonce = ParagonIE_Sodium_Compat::crypto_generichash(
215
-            $ephemeralPK . $publicKey,
216
-            '',
217
-            24
218
-        );
219
-
220
-        /** @var int $firstWrite */
221
-        $firstWrite = fwrite(
222
-            $ofp,
223
-            $ephemeralPK,
224
-            ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES
225
-        );
226
-        if (!is_int($firstWrite)) {
227
-            fclose($ifp);
228
-            fclose($ofp);
229
-            ParagonIE_Sodium_Compat::memzero($ephKeypair);
230
-            throw new SodiumException('Could not write to output file');
231
-        }
232
-        if ($firstWrite !== ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES) {
233
-            ParagonIE_Sodium_Compat::memzero($ephKeypair);
234
-            fclose($ifp);
235
-            fclose($ofp);
236
-            throw new SodiumException('Error writing public key to output file');
237
-        }
238
-
239
-        $res = self::box_encrypt($ifp, $ofp, $size, $nonce, $msgKeypair);
240
-        fclose($ifp);
241
-        fclose($ofp);
242
-        try {
243
-            ParagonIE_Sodium_Compat::memzero($nonce);
244
-            ParagonIE_Sodium_Compat::memzero($ephKeypair);
245
-        } catch (SodiumException $ex) {
246
-            /** @psalm-suppress PossiblyUndefinedVariable */
247
-            unset($ephKeypair);
248
-        }
249
-        return $res;
250
-    }
251
-
252
-    /**
253
-     * Open a sealed file (rather than a string). Uses less memory than
254
-     * ParagonIE_Sodium_Compat::crypto_box_seal_open(), but produces
255
-     * the same result.
256
-     *
257
-     * Warning: Does not protect against TOCTOU attacks. You should
258
-     * just load the file into memory and use crypto_box_seal_open() if
259
-     * you are worried about those.
260
-     *
261
-     * @param string $inputFile
262
-     * @param string $outputFile
263
-     * @param string $ecdhKeypair
264
-     * @return bool
265
-     * @throws SodiumException
266
-     * @throws TypeError
267
-     */
268
-    public static function box_seal_open($inputFile, $outputFile, $ecdhKeypair)
269
-    {
270
-        /* Type checks: */
271
-        if (!is_string($inputFile)) {
272
-            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
273
-        }
274
-        if (!is_string($outputFile)) {
275
-            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
276
-        }
277
-        if (!is_string($ecdhKeypair)) {
278
-            throw new TypeError('Argument 3 must be a string, ' . gettype($ecdhKeypair) . ' given.');
279
-        }
280
-
281
-        /* Input validation: */
282
-        if (self::strlen($ecdhKeypair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
283
-            throw new TypeError('Argument 3 must be CRYPTO_BOX_KEYPAIRBYTES bytes');
284
-        }
285
-
286
-        $publicKey = ParagonIE_Sodium_Compat::crypto_box_publickey($ecdhKeypair);
287
-
288
-        /** @var int $size */
289
-        $size = filesize($inputFile);
290
-        if (!is_int($size)) {
291
-            throw new SodiumException('Could not obtain the file size');
292
-        }
293
-
294
-        /** @var resource $ifp */
295
-        $ifp = fopen($inputFile, 'rb');
296
-        if (!is_resource($ifp)) {
297
-            throw new SodiumException('Could not open input file for reading');
298
-        }
299
-
300
-        /** @var resource $ofp */
301
-        $ofp = fopen($outputFile, 'wb');
302
-        if (!is_resource($ofp)) {
303
-            fclose($ifp);
304
-            throw new SodiumException('Could not open output file for writing');
305
-        }
306
-
307
-        $ephemeralPK = fread($ifp, ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES);
308
-        if (!is_string($ephemeralPK)) {
309
-            throw new SodiumException('Could not read input file');
310
-        }
311
-        if (self::strlen($ephemeralPK) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES) {
312
-            fclose($ifp);
313
-            fclose($ofp);
314
-            throw new SodiumException('Could not read public key from sealed file');
315
-        }
316
-
317
-        $nonce = ParagonIE_Sodium_Compat::crypto_generichash(
318
-            $ephemeralPK . $publicKey,
319
-            '',
320
-            24
321
-        );
322
-        $msgKeypair = ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey(
323
-            ParagonIE_Sodium_Compat::crypto_box_secretkey($ecdhKeypair),
324
-            $ephemeralPK
325
-        );
326
-
327
-        $res = self::box_decrypt($ifp, $ofp, $size, $nonce, $msgKeypair);
328
-        fclose($ifp);
329
-        fclose($ofp);
330
-        try {
331
-            ParagonIE_Sodium_Compat::memzero($nonce);
332
-            ParagonIE_Sodium_Compat::memzero($ephKeypair);
333
-        } catch (SodiumException $ex) {
334
-            if (isset($ephKeypair)) {
335
-                unset($ephKeypair);
336
-            }
337
-        }
338
-        return $res;
339
-    }
340
-
341
-    /**
342
-     * Calculate the BLAKE2b hash of a file.
343
-     *
344
-     * @param string      $filePath     Absolute path to a file on the filesystem
345
-     * @param string|null $key          BLAKE2b key
346
-     * @param int         $outputLength Length of hash output
347
-     *
348
-     * @return string                   BLAKE2b hash
349
-     * @throws SodiumException
350
-     * @throws TypeError
351
-     * @psalm-suppress FailedTypeResolution
352
-     */
353
-    public static function generichash($filePath, $key = '', $outputLength = 32)
354
-    {
355
-        /* Type checks: */
356
-        if (!is_string($filePath)) {
357
-            throw new TypeError('Argument 1 must be a string, ' . gettype($filePath) . ' given.');
358
-        }
359
-        if (!is_string($key)) {
360
-            if (is_null($key)) {
361
-                $key = '';
362
-            } else {
363
-                throw new TypeError('Argument 2 must be a string, ' . gettype($key) . ' given.');
364
-            }
365
-        }
366
-        if (!is_int($outputLength)) {
367
-            if (!is_numeric($outputLength)) {
368
-                throw new TypeError('Argument 3 must be an integer, ' . gettype($outputLength) . ' given.');
369
-            }
370
-            $outputLength = (int) $outputLength;
371
-        }
372
-
373
-        /* Input validation: */
374
-        if (!empty($key)) {
375
-            if (self::strlen($key) < ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_KEYBYTES_MIN) {
376
-                throw new TypeError('Argument 2 must be at least CRYPTO_GENERICHASH_KEYBYTES_MIN bytes');
377
-            }
378
-            if (self::strlen($key) > ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_KEYBYTES_MAX) {
379
-                throw new TypeError('Argument 2 must be at most CRYPTO_GENERICHASH_KEYBYTES_MAX bytes');
380
-            }
381
-        }
382
-        if ($outputLength < ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_BYTES_MIN) {
383
-            throw new SodiumException('Argument 3 must be at least CRYPTO_GENERICHASH_BYTES_MIN');
384
-        }
385
-        if ($outputLength > ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_BYTES_MAX) {
386
-            throw new SodiumException('Argument 3 must be at least CRYPTO_GENERICHASH_BYTES_MAX');
387
-        }
388
-
389
-        /** @var int $size */
390
-        $size = filesize($filePath);
391
-        if (!is_int($size)) {
392
-            throw new SodiumException('Could not obtain the file size');
393
-        }
394
-
395
-        /** @var resource $fp */
396
-        $fp = fopen($filePath, 'rb');
397
-        if (!is_resource($fp)) {
398
-            throw new SodiumException('Could not open input file for reading');
399
-        }
400
-        $ctx = ParagonIE_Sodium_Compat::crypto_generichash_init($key, $outputLength);
401
-        while ($size > 0) {
402
-            $blockSize = $size > 64
403
-                ? 64
404
-                : $size;
405
-            $read = fread($fp, $blockSize);
406
-            if (!is_string($read)) {
407
-                throw new SodiumException('Could not read input file');
408
-            }
409
-            ParagonIE_Sodium_Compat::crypto_generichash_update($ctx, $read);
410
-            $size -= $blockSize;
411
-        }
412
-
413
-        fclose($fp);
414
-        return ParagonIE_Sodium_Compat::crypto_generichash_final($ctx, $outputLength);
415
-    }
416
-
417
-    /**
418
-     * Encrypt a file (rather than a string). Uses less memory than
419
-     * ParagonIE_Sodium_Compat::crypto_secretbox(), but produces
420
-     * the same result.
421
-     *
422
-     * @param string $inputFile  Absolute path to a file on the filesystem
423
-     * @param string $outputFile Absolute path to a file on the filesystem
424
-     * @param string $nonce      Number to be used only once
425
-     * @param string $key        Encryption key
426
-     *
427
-     * @return bool
428
-     * @throws SodiumException
429
-     * @throws TypeError
430
-     */
431
-    public static function secretbox($inputFile, $outputFile, $nonce, $key)
432
-    {
433
-        /* Type checks: */
434
-        if (!is_string($inputFile)) {
435
-            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given..');
436
-        }
437
-        if (!is_string($outputFile)) {
438
-            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
439
-        }
440
-        if (!is_string($nonce)) {
441
-            throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
442
-        }
443
-
444
-        /* Input validation: */
445
-        if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_NONCEBYTES) {
446
-            throw new TypeError('Argument 3 must be CRYPTO_SECRETBOX_NONCEBYTES bytes');
447
-        }
448
-        if (!is_string($key)) {
449
-            throw new TypeError('Argument 4 must be a string, ' . gettype($key) . ' given.');
450
-        }
451
-        if (self::strlen($key) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_KEYBYTES) {
452
-            throw new TypeError('Argument 4 must be CRYPTO_SECRETBOX_KEYBYTES bytes');
453
-        }
454
-
455
-        /** @var int $size */
456
-        $size = filesize($inputFile);
457
-        if (!is_int($size)) {
458
-            throw new SodiumException('Could not obtain the file size');
459
-        }
460
-
461
-        /** @var resource $ifp */
462
-        $ifp = fopen($inputFile, 'rb');
463
-        if (!is_resource($ifp)) {
464
-            throw new SodiumException('Could not open input file for reading');
465
-        }
466
-
467
-        /** @var resource $ofp */
468
-        $ofp = fopen($outputFile, 'wb');
469
-        if (!is_resource($ofp)) {
470
-            fclose($ifp);
471
-            throw new SodiumException('Could not open output file for writing');
472
-        }
473
-
474
-        $res = self::secretbox_encrypt($ifp, $ofp, $size, $nonce, $key);
475
-        fclose($ifp);
476
-        fclose($ofp);
477
-        return $res;
478
-    }
479
-    /**
480
-     * Seal a file (rather than a string). Uses less memory than
481
-     * ParagonIE_Sodium_Compat::crypto_secretbox_open(), but produces
482
-     * the same result.
483
-     *
484
-     * Warning: Does not protect against TOCTOU attacks. You should
485
-     * just load the file into memory and use crypto_secretbox_open() if
486
-     * you are worried about those.
487
-     *
488
-     * @param string $inputFile
489
-     * @param string $outputFile
490
-     * @param string $nonce
491
-     * @param string $key
492
-     * @return bool
493
-     * @throws SodiumException
494
-     * @throws TypeError
495
-     */
496
-    public static function secretbox_open($inputFile, $outputFile, $nonce, $key)
497
-    {
498
-        /* Type checks: */
499
-        if (!is_string($inputFile)) {
500
-            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
501
-        }
502
-        if (!is_string($outputFile)) {
503
-            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
504
-        }
505
-        if (!is_string($nonce)) {
506
-            throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
507
-        }
508
-        if (!is_string($key)) {
509
-            throw new TypeError('Argument 4 must be a string, ' . gettype($key) . ' given.');
510
-        }
511
-
512
-        /* Input validation: */
513
-        if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_NONCEBYTES) {
514
-            throw new TypeError('Argument 4 must be CRYPTO_SECRETBOX_NONCEBYTES bytes');
515
-        }
516
-        if (self::strlen($key) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_KEYBYTES) {
517
-            throw new TypeError('Argument 4 must be CRYPTO_SECRETBOXBOX_KEYBYTES bytes');
518
-        }
519
-
520
-        /** @var int $size */
521
-        $size = filesize($inputFile);
522
-        if (!is_int($size)) {
523
-            throw new SodiumException('Could not obtain the file size');
524
-        }
525
-
526
-        /** @var resource $ifp */
527
-        $ifp = fopen($inputFile, 'rb');
528
-        if (!is_resource($ifp)) {
529
-            throw new SodiumException('Could not open input file for reading');
530
-        }
531
-
532
-        /** @var resource $ofp */
533
-        $ofp = fopen($outputFile, 'wb');
534
-        if (!is_resource($ofp)) {
535
-            fclose($ifp);
536
-            throw new SodiumException('Could not open output file for writing');
537
-        }
538
-
539
-        $res = self::secretbox_decrypt($ifp, $ofp, $size, $nonce, $key);
540
-        fclose($ifp);
541
-        fclose($ofp);
542
-        try {
543
-            ParagonIE_Sodium_Compat::memzero($key);
544
-        } catch (SodiumException $ex) {
545
-            /** @psalm-suppress PossiblyUndefinedVariable */
546
-            unset($key);
547
-        }
548
-        return $res;
549
-    }
550
-
551
-    /**
552
-     * Sign a file (rather than a string). Uses less memory than
553
-     * ParagonIE_Sodium_Compat::crypto_sign_detached(), but produces
554
-     * the same result.
555
-     *
556
-     * @param string $filePath  Absolute path to a file on the filesystem
557
-     * @param string $secretKey Secret signing key
558
-     *
559
-     * @return string           Ed25519 signature
560
-     * @throws SodiumException
561
-     * @throws TypeError
562
-     */
563
-    public static function sign($filePath, $secretKey)
564
-    {
565
-        /* Type checks: */
566
-        if (!is_string($filePath)) {
567
-            throw new TypeError('Argument 1 must be a string, ' . gettype($filePath) . ' given.');
568
-        }
569
-        if (!is_string($secretKey)) {
570
-            throw new TypeError('Argument 2 must be a string, ' . gettype($secretKey) . ' given.');
571
-        }
572
-
573
-        /* Input validation: */
574
-        if (self::strlen($secretKey) !== ParagonIE_Sodium_Compat::CRYPTO_SIGN_SECRETKEYBYTES) {
575
-            throw new TypeError('Argument 2 must be CRYPTO_SIGN_SECRETKEYBYTES bytes');
576
-        }
577
-        if (PHP_INT_SIZE === 4) {
578
-            return self::sign_core32($filePath, $secretKey);
579
-        }
580
-
581
-        /** @var int $size */
582
-        $size = filesize($filePath);
583
-        if (!is_int($size)) {
584
-            throw new SodiumException('Could not obtain the file size');
585
-        }
586
-
587
-        /** @var resource $fp */
588
-        $fp = fopen($filePath, 'rb');
589
-        if (!is_resource($fp)) {
590
-            throw new SodiumException('Could not open input file for reading');
591
-        }
592
-
593
-        /** @var string $az */
594
-        $az = hash('sha512', self::substr($secretKey, 0, 32), true);
595
-
596
-        $az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
597
-        $az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);
598
-
599
-        $hs = hash_init('sha512');
600
-        self::hash_update($hs, self::substr($az, 32, 32));
601
-        /** @var resource $hs */
602
-        $hs = self::updateHashWithFile($hs, $fp, $size);
603
-
604
-        /** @var string $nonceHash */
605
-        $nonceHash = hash_final($hs, true);
606
-
607
-        /** @var string $pk */
608
-        $pk = self::substr($secretKey, 32, 32);
609
-
610
-        /** @var string $nonce */
611
-        $nonce = ParagonIE_Sodium_Core_Ed25519::sc_reduce($nonceHash) . self::substr($nonceHash, 32);
612
-
613
-        /** @var string $sig */
614
-        $sig = ParagonIE_Sodium_Core_Ed25519::ge_p3_tobytes(
615
-            ParagonIE_Sodium_Core_Ed25519::ge_scalarmult_base($nonce)
616
-        );
617
-
618
-        $hs = hash_init('sha512');
619
-        self::hash_update($hs, self::substr($sig, 0, 32));
620
-        self::hash_update($hs, self::substr($pk, 0, 32));
621
-        /** @var resource $hs */
622
-        $hs = self::updateHashWithFile($hs, $fp, $size);
623
-
624
-        /** @var string $hramHash */
625
-        $hramHash = hash_final($hs, true);
626
-
627
-        /** @var string $hram */
628
-        $hram = ParagonIE_Sodium_Core_Ed25519::sc_reduce($hramHash);
629
-
630
-        /** @var string $sigAfter */
631
-        $sigAfter = ParagonIE_Sodium_Core_Ed25519::sc_muladd($hram, $az, $nonce);
632
-
633
-        /** @var string $sig */
634
-        $sig = self::substr($sig, 0, 32) . self::substr($sigAfter, 0, 32);
635
-
636
-        try {
637
-            ParagonIE_Sodium_Compat::memzero($az);
638
-        } catch (SodiumException $ex) {
639
-            $az = null;
640
-        }
641
-        fclose($fp);
642
-        return $sig;
643
-    }
644
-
645
-    /**
646
-     * Verify a file (rather than a string). Uses less memory than
647
-     * ParagonIE_Sodium_Compat::crypto_sign_verify_detached(), but
648
-     * produces the same result.
649
-     *
650
-     * @param string $sig       Ed25519 signature
651
-     * @param string $filePath  Absolute path to a file on the filesystem
652
-     * @param string $publicKey Signing public key
653
-     *
654
-     * @return bool
655
-     * @throws SodiumException
656
-     * @throws TypeError
657
-     * @throws Exception
658
-     */
659
-    public static function verify($sig, $filePath, $publicKey)
660
-    {
661
-        /* Type checks: */
662
-        if (!is_string($sig)) {
663
-            throw new TypeError('Argument 1 must be a string, ' . gettype($sig) . ' given.');
664
-        }
665
-        if (!is_string($filePath)) {
666
-            throw new TypeError('Argument 2 must be a string, ' . gettype($filePath) . ' given.');
667
-        }
668
-        if (!is_string($publicKey)) {
669
-            throw new TypeError('Argument 3 must be a string, ' . gettype($publicKey) . ' given.');
670
-        }
671
-
672
-        /* Input validation: */
673
-        if (self::strlen($sig) !== ParagonIE_Sodium_Compat::CRYPTO_SIGN_BYTES) {
674
-            throw new TypeError('Argument 1 must be CRYPTO_SIGN_BYTES bytes');
675
-        }
676
-        if (self::strlen($publicKey) !== ParagonIE_Sodium_Compat::CRYPTO_SIGN_PUBLICKEYBYTES) {
677
-            throw new TypeError('Argument 3 must be CRYPTO_SIGN_PUBLICKEYBYTES bytes');
678
-        }
679
-        if (self::strlen($sig) < 64) {
680
-            throw new SodiumException('Signature is too short');
681
-        }
682
-
683
-        if (PHP_INT_SIZE === 4) {
684
-            return self::verify_core32($sig, $filePath, $publicKey);
685
-        }
686
-
687
-        /* Security checks */
688
-        if (
689
-            (ParagonIE_Sodium_Core_Ed25519::chrToInt($sig[63]) & 240)
690
-                &&
691
-            ParagonIE_Sodium_Core_Ed25519::check_S_lt_L(self::substr($sig, 32, 32))
692
-        ) {
693
-            throw new SodiumException('S < L - Invalid signature');
694
-        }
695
-        if (ParagonIE_Sodium_Core_Ed25519::small_order($sig)) {
696
-            throw new SodiumException('Signature is on too small of an order');
697
-        }
698
-        if ((self::chrToInt($sig[63]) & 224) !== 0) {
699
-            throw new SodiumException('Invalid signature');
700
-        }
701
-        $d = 0;
702
-        for ($i = 0; $i < 32; ++$i) {
703
-            $d |= self::chrToInt($publicKey[$i]);
704
-        }
705
-        if ($d === 0) {
706
-            throw new SodiumException('All zero public key');
707
-        }
708
-
709
-        /** @var int $size */
710
-        $size = filesize($filePath);
711
-        if (!is_int($size)) {
712
-            throw new SodiumException('Could not obtain the file size');
713
-        }
714
-
715
-        /** @var resource $fp */
716
-        $fp = fopen($filePath, 'rb');
717
-        if (!is_resource($fp)) {
718
-            throw new SodiumException('Could not open input file for reading');
719
-        }
720
-
721
-        /** @var bool The original value of ParagonIE_Sodium_Compat::$fastMult */
722
-        $orig = ParagonIE_Sodium_Compat::$fastMult;
723
-
724
-        // Set ParagonIE_Sodium_Compat::$fastMult to true to speed up verification.
725
-        ParagonIE_Sodium_Compat::$fastMult = true;
726
-
727
-        /** @var ParagonIE_Sodium_Core_Curve25519_Ge_P3 $A */
728
-        $A = ParagonIE_Sodium_Core_Ed25519::ge_frombytes_negate_vartime($publicKey);
729
-
730
-        $hs = hash_init('sha512');
731
-        self::hash_update($hs, self::substr($sig, 0, 32));
732
-        self::hash_update($hs, self::substr($publicKey, 0, 32));
733
-        /** @var resource $hs */
734
-        $hs = self::updateHashWithFile($hs, $fp, $size);
735
-        /** @var string $hDigest */
736
-        $hDigest = hash_final($hs, true);
737
-
738
-        /** @var string $h */
739
-        $h = ParagonIE_Sodium_Core_Ed25519::sc_reduce($hDigest) . self::substr($hDigest, 32);
740
-
741
-        /** @var ParagonIE_Sodium_Core_Curve25519_Ge_P2 $R */
742
-        $R = ParagonIE_Sodium_Core_Ed25519::ge_double_scalarmult_vartime(
743
-            $h,
744
-            $A,
745
-            self::substr($sig, 32)
746
-        );
747
-
748
-        /** @var string $rcheck */
749
-        $rcheck = ParagonIE_Sodium_Core_Ed25519::ge_tobytes($R);
750
-
751
-        // Close the file handle
752
-        fclose($fp);
753
-
754
-        // Reset ParagonIE_Sodium_Compat::$fastMult to what it was before.
755
-        ParagonIE_Sodium_Compat::$fastMult = $orig;
756
-        return self::verify_32($rcheck, self::substr($sig, 0, 32));
757
-    }
758
-
759
-    /**
760
-     * @param resource $ifp
761
-     * @param resource $ofp
762
-     * @param int      $mlen
763
-     * @param string   $nonce
764
-     * @param string   $boxKeypair
765
-     * @return bool
766
-     * @throws SodiumException
767
-     * @throws TypeError
768
-     */
769
-    protected static function box_encrypt($ifp, $ofp, $mlen, $nonce, $boxKeypair)
770
-    {
771
-        if (PHP_INT_SIZE === 4) {
772
-            return self::secretbox_encrypt(
773
-                $ifp,
774
-                $ofp,
775
-                $mlen,
776
-                $nonce,
777
-                ParagonIE_Sodium_Crypto32::box_beforenm(
778
-                    ParagonIE_Sodium_Crypto32::box_secretkey($boxKeypair),
779
-                    ParagonIE_Sodium_Crypto32::box_publickey($boxKeypair)
780
-                )
781
-            );
782
-        }
783
-        return self::secretbox_encrypt(
784
-            $ifp,
785
-            $ofp,
786
-            $mlen,
787
-            $nonce,
788
-            ParagonIE_Sodium_Crypto::box_beforenm(
789
-                ParagonIE_Sodium_Crypto::box_secretkey($boxKeypair),
790
-                ParagonIE_Sodium_Crypto::box_publickey($boxKeypair)
791
-            )
792
-        );
793
-    }
794
-
795
-
796
-    /**
797
-     * @param resource $ifp
798
-     * @param resource $ofp
799
-     * @param int      $mlen
800
-     * @param string   $nonce
801
-     * @param string   $boxKeypair
802
-     * @return bool
803
-     * @throws SodiumException
804
-     * @throws TypeError
805
-     */
806
-    protected static function box_decrypt($ifp, $ofp, $mlen, $nonce, $boxKeypair)
807
-    {
808
-        if (PHP_INT_SIZE === 4) {
809
-            return self::secretbox_decrypt(
810
-                $ifp,
811
-                $ofp,
812
-                $mlen,
813
-                $nonce,
814
-                ParagonIE_Sodium_Crypto32::box_beforenm(
815
-                    ParagonIE_Sodium_Crypto32::box_secretkey($boxKeypair),
816
-                    ParagonIE_Sodium_Crypto32::box_publickey($boxKeypair)
817
-                )
818
-            );
819
-        }
820
-        return self::secretbox_decrypt(
821
-            $ifp,
822
-            $ofp,
823
-            $mlen,
824
-            $nonce,
825
-            ParagonIE_Sodium_Crypto::box_beforenm(
826
-                ParagonIE_Sodium_Crypto::box_secretkey($boxKeypair),
827
-                ParagonIE_Sodium_Crypto::box_publickey($boxKeypair)
828
-            )
829
-        );
830
-    }
831
-
832
-    /**
833
-     * Encrypt a file
834
-     *
835
-     * @param resource $ifp
836
-     * @param resource $ofp
837
-     * @param int $mlen
838
-     * @param string $nonce
839
-     * @param string $key
840
-     * @return bool
841
-     * @throws SodiumException
842
-     * @throws TypeError
843
-     */
844
-    protected static function secretbox_encrypt($ifp, $ofp, $mlen, $nonce, $key)
845
-    {
846
-        if (PHP_INT_SIZE === 4) {
847
-            return self::secretbox_encrypt_core32($ifp, $ofp, $mlen, $nonce, $key);
848
-        }
849
-
850
-        $plaintext = fread($ifp, 32);
851
-        if (!is_string($plaintext)) {
852
-            throw new SodiumException('Could not read input file');
853
-        }
854
-        $first32 = self::ftell($ifp);
855
-
856
-        /** @var string $subkey */
857
-        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);
858
-
859
-        /** @var string $realNonce */
860
-        $realNonce = ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);
861
-
862
-        /** @var string $block0 */
863
-        $block0 = str_repeat("\x00", 32);
864
-
865
-        /** @var int $mlen - Length of the plaintext message */
866
-        $mlen0 = $mlen;
867
-        if ($mlen0 > 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES) {
868
-            $mlen0 = 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES;
869
-        }
870
-        $block0 .= ParagonIE_Sodium_Core_Util::substr($plaintext, 0, $mlen0);
871
-
872
-        /** @var string $block0 */
873
-        $block0 = ParagonIE_Sodium_Core_Salsa20::salsa20_xor(
874
-            $block0,
875
-            $realNonce,
876
-            $subkey
877
-        );
878
-
879
-        $state = new ParagonIE_Sodium_Core_Poly1305_State(
880
-            ParagonIE_Sodium_Core_Util::substr(
881
-                $block0,
882
-                0,
883
-                ParagonIE_Sodium_Crypto::onetimeauth_poly1305_KEYBYTES
884
-            )
885
-        );
886
-
887
-        // Pre-write 16 blank bytes for the Poly1305 tag
888
-        $start = self::ftell($ofp);
889
-        fwrite($ofp, str_repeat("\x00", 16));
890
-
891
-        /** @var string $c */
892
-        $cBlock = ParagonIE_Sodium_Core_Util::substr(
893
-            $block0,
894
-            ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES
895
-        );
896
-        $state->update($cBlock);
897
-        fwrite($ofp, $cBlock);
898
-        $mlen -= 32;
899
-
900
-        /** @var int $iter */
901
-        $iter = 1;
902
-
903
-        /** @var int $incr */
904
-        $incr = self::BUFFER_SIZE >> 6;
905
-
906
-        /*
11
+	/* PHP's default buffer size is 8192 for fread()/fwrite(). */
12
+	const BUFFER_SIZE = 8192;
13
+
14
+	/**
15
+	 * Box a file (rather than a string). Uses less memory than
16
+	 * ParagonIE_Sodium_Compat::crypto_box(), but produces
17
+	 * the same result.
18
+	 *
19
+	 * @param string $inputFile  Absolute path to a file on the filesystem
20
+	 * @param string $outputFile Absolute path to a file on the filesystem
21
+	 * @param string $nonce      Number to be used only once
22
+	 * @param string $keyPair    ECDH secret key and ECDH public key concatenated
23
+	 *
24
+	 * @return bool
25
+	 * @throws SodiumException
26
+	 * @throws TypeError
27
+	 */
28
+	public static function box($inputFile, $outputFile, $nonce, $keyPair)
29
+	{
30
+		/* Type checks: */
31
+		if (!is_string($inputFile)) {
32
+			throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
33
+		}
34
+		if (!is_string($outputFile)) {
35
+			throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
36
+		}
37
+		if (!is_string($nonce)) {
38
+			throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
39
+		}
40
+
41
+		/* Input validation: */
42
+		if (!is_string($keyPair)) {
43
+			throw new TypeError('Argument 4 must be a string, ' . gettype($keyPair) . ' given.');
44
+		}
45
+		if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_NONCEBYTES) {
46
+			throw new TypeError('Argument 3 must be CRYPTO_BOX_NONCEBYTES bytes');
47
+		}
48
+		if (self::strlen($keyPair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
49
+			throw new TypeError('Argument 4 must be CRYPTO_BOX_KEYPAIRBYTES bytes');
50
+		}
51
+
52
+		/** @var int $size */
53
+		$size = filesize($inputFile);
54
+		if (!is_int($size)) {
55
+			throw new SodiumException('Could not obtain the file size');
56
+		}
57
+
58
+		/** @var resource $ifp */
59
+		$ifp = fopen($inputFile, 'rb');
60
+		if (!is_resource($ifp)) {
61
+			throw new SodiumException('Could not open input file for reading');
62
+		}
63
+
64
+		/** @var resource $ofp */
65
+		$ofp = fopen($outputFile, 'wb');
66
+		if (!is_resource($ofp)) {
67
+			fclose($ifp);
68
+			throw new SodiumException('Could not open output file for writing');
69
+		}
70
+
71
+		$res = self::box_encrypt($ifp, $ofp, $size, $nonce, $keyPair);
72
+		fclose($ifp);
73
+		fclose($ofp);
74
+		return $res;
75
+	}
76
+
77
+	/**
78
+	 * Open a boxed file (rather than a string). Uses less memory than
79
+	 * ParagonIE_Sodium_Compat::crypto_box_open(), but produces
80
+	 * the same result.
81
+	 *
82
+	 * Warning: Does not protect against TOCTOU attacks. You should
83
+	 * just load the file into memory and use crypto_box_open() if
84
+	 * you are worried about those.
85
+	 *
86
+	 * @param string $inputFile
87
+	 * @param string $outputFile
88
+	 * @param string $nonce
89
+	 * @param string $keypair
90
+	 * @return bool
91
+	 * @throws SodiumException
92
+	 * @throws TypeError
93
+	 */
94
+	public static function box_open($inputFile, $outputFile, $nonce, $keypair)
95
+	{
96
+		/* Type checks: */
97
+		if (!is_string($inputFile)) {
98
+			throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
99
+		}
100
+		if (!is_string($outputFile)) {
101
+			throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
102
+		}
103
+		if (!is_string($nonce)) {
104
+			throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
105
+		}
106
+		if (!is_string($keypair)) {
107
+			throw new TypeError('Argument 4 must be a string, ' . gettype($keypair) . ' given.');
108
+		}
109
+
110
+		/* Input validation: */
111
+		if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_NONCEBYTES) {
112
+			throw new TypeError('Argument 4 must be CRYPTO_BOX_NONCEBYTES bytes');
113
+		}
114
+		if (self::strlen($keypair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
115
+			throw new TypeError('Argument 4 must be CRYPTO_BOX_KEYPAIRBYTES bytes');
116
+		}
117
+
118
+		/** @var int $size */
119
+		$size = filesize($inputFile);
120
+		if (!is_int($size)) {
121
+			throw new SodiumException('Could not obtain the file size');
122
+		}
123
+
124
+		/** @var resource $ifp */
125
+		$ifp = fopen($inputFile, 'rb');
126
+		if (!is_resource($ifp)) {
127
+			throw new SodiumException('Could not open input file for reading');
128
+		}
129
+
130
+		/** @var resource $ofp */
131
+		$ofp = fopen($outputFile, 'wb');
132
+		if (!is_resource($ofp)) {
133
+			fclose($ifp);
134
+			throw new SodiumException('Could not open output file for writing');
135
+		}
136
+
137
+		$res = self::box_decrypt($ifp, $ofp, $size, $nonce, $keypair);
138
+		fclose($ifp);
139
+		fclose($ofp);
140
+		try {
141
+			ParagonIE_Sodium_Compat::memzero($nonce);
142
+			ParagonIE_Sodium_Compat::memzero($ephKeypair);
143
+		} catch (SodiumException $ex) {
144
+			if (isset($ephKeypair)) {
145
+				unset($ephKeypair);
146
+			}
147
+		}
148
+		return $res;
149
+	}
150
+
151
+	/**
152
+	 * Seal a file (rather than a string). Uses less memory than
153
+	 * ParagonIE_Sodium_Compat::crypto_box_seal(), but produces
154
+	 * the same result.
155
+	 *
156
+	 * @param string $inputFile  Absolute path to a file on the filesystem
157
+	 * @param string $outputFile Absolute path to a file on the filesystem
158
+	 * @param string $publicKey  ECDH public key
159
+	 *
160
+	 * @return bool
161
+	 * @throws SodiumException
162
+	 * @throws TypeError
163
+	 */
164
+	public static function box_seal($inputFile, $outputFile, $publicKey)
165
+	{
166
+		/* Type checks: */
167
+		if (!is_string($inputFile)) {
168
+			throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
169
+		}
170
+		if (!is_string($outputFile)) {
171
+			throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
172
+		}
173
+		if (!is_string($publicKey)) {
174
+			throw new TypeError('Argument 3 must be a string, ' . gettype($publicKey) . ' given.');
175
+		}
176
+
177
+		/* Input validation: */
178
+		if (self::strlen($publicKey) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES) {
179
+			throw new TypeError('Argument 3 must be CRYPTO_BOX_PUBLICKEYBYTES bytes');
180
+		}
181
+
182
+		/** @var int $size */
183
+		$size = filesize($inputFile);
184
+		if (!is_int($size)) {
185
+			throw new SodiumException('Could not obtain the file size');
186
+		}
187
+
188
+		/** @var resource $ifp */
189
+		$ifp = fopen($inputFile, 'rb');
190
+		if (!is_resource($ifp)) {
191
+			throw new SodiumException('Could not open input file for reading');
192
+		}
193
+
194
+		/** @var resource $ofp */
195
+		$ofp = fopen($outputFile, 'wb');
196
+		if (!is_resource($ofp)) {
197
+			fclose($ifp);
198
+			throw new SodiumException('Could not open output file for writing');
199
+		}
200
+
201
+		/** @var string $ephKeypair */
202
+		$ephKeypair = ParagonIE_Sodium_Compat::crypto_box_keypair();
203
+
204
+		/** @var string $msgKeypair */
205
+		$msgKeypair = ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey(
206
+			ParagonIE_Sodium_Compat::crypto_box_secretkey($ephKeypair),
207
+			$publicKey
208
+		);
209
+
210
+		/** @var string $ephemeralPK */
211
+		$ephemeralPK = ParagonIE_Sodium_Compat::crypto_box_publickey($ephKeypair);
212
+
213
+		/** @var string $nonce */
214
+		$nonce = ParagonIE_Sodium_Compat::crypto_generichash(
215
+			$ephemeralPK . $publicKey,
216
+			'',
217
+			24
218
+		);
219
+
220
+		/** @var int $firstWrite */
221
+		$firstWrite = fwrite(
222
+			$ofp,
223
+			$ephemeralPK,
224
+			ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES
225
+		);
226
+		if (!is_int($firstWrite)) {
227
+			fclose($ifp);
228
+			fclose($ofp);
229
+			ParagonIE_Sodium_Compat::memzero($ephKeypair);
230
+			throw new SodiumException('Could not write to output file');
231
+		}
232
+		if ($firstWrite !== ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES) {
233
+			ParagonIE_Sodium_Compat::memzero($ephKeypair);
234
+			fclose($ifp);
235
+			fclose($ofp);
236
+			throw new SodiumException('Error writing public key to output file');
237
+		}
238
+
239
+		$res = self::box_encrypt($ifp, $ofp, $size, $nonce, $msgKeypair);
240
+		fclose($ifp);
241
+		fclose($ofp);
242
+		try {
243
+			ParagonIE_Sodium_Compat::memzero($nonce);
244
+			ParagonIE_Sodium_Compat::memzero($ephKeypair);
245
+		} catch (SodiumException $ex) {
246
+			/** @psalm-suppress PossiblyUndefinedVariable */
247
+			unset($ephKeypair);
248
+		}
249
+		return $res;
250
+	}
251
+
252
+	/**
253
+	 * Open a sealed file (rather than a string). Uses less memory than
254
+	 * ParagonIE_Sodium_Compat::crypto_box_seal_open(), but produces
255
+	 * the same result.
256
+	 *
257
+	 * Warning: Does not protect against TOCTOU attacks. You should
258
+	 * just load the file into memory and use crypto_box_seal_open() if
259
+	 * you are worried about those.
260
+	 *
261
+	 * @param string $inputFile
262
+	 * @param string $outputFile
263
+	 * @param string $ecdhKeypair
264
+	 * @return bool
265
+	 * @throws SodiumException
266
+	 * @throws TypeError
267
+	 */
268
+	public static function box_seal_open($inputFile, $outputFile, $ecdhKeypair)
269
+	{
270
+		/* Type checks: */
271
+		if (!is_string($inputFile)) {
272
+			throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
273
+		}
274
+		if (!is_string($outputFile)) {
275
+			throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
276
+		}
277
+		if (!is_string($ecdhKeypair)) {
278
+			throw new TypeError('Argument 3 must be a string, ' . gettype($ecdhKeypair) . ' given.');
279
+		}
280
+
281
+		/* Input validation: */
282
+		if (self::strlen($ecdhKeypair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
283
+			throw new TypeError('Argument 3 must be CRYPTO_BOX_KEYPAIRBYTES bytes');
284
+		}
285
+
286
+		$publicKey = ParagonIE_Sodium_Compat::crypto_box_publickey($ecdhKeypair);
287
+
288
+		/** @var int $size */
289
+		$size = filesize($inputFile);
290
+		if (!is_int($size)) {
291
+			throw new SodiumException('Could not obtain the file size');
292
+		}
293
+
294
+		/** @var resource $ifp */
295
+		$ifp = fopen($inputFile, 'rb');
296
+		if (!is_resource($ifp)) {
297
+			throw new SodiumException('Could not open input file for reading');
298
+		}
299
+
300
+		/** @var resource $ofp */
301
+		$ofp = fopen($outputFile, 'wb');
302
+		if (!is_resource($ofp)) {
303
+			fclose($ifp);
304
+			throw new SodiumException('Could not open output file for writing');
305
+		}
306
+
307
+		$ephemeralPK = fread($ifp, ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES);
308
+		if (!is_string($ephemeralPK)) {
309
+			throw new SodiumException('Could not read input file');
310
+		}
311
+		if (self::strlen($ephemeralPK) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES) {
312
+			fclose($ifp);
313
+			fclose($ofp);
314
+			throw new SodiumException('Could not read public key from sealed file');
315
+		}
316
+
317
+		$nonce = ParagonIE_Sodium_Compat::crypto_generichash(
318
+			$ephemeralPK . $publicKey,
319
+			'',
320
+			24
321
+		);
322
+		$msgKeypair = ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey(
323
+			ParagonIE_Sodium_Compat::crypto_box_secretkey($ecdhKeypair),
324
+			$ephemeralPK
325
+		);
326
+
327
+		$res = self::box_decrypt($ifp, $ofp, $size, $nonce, $msgKeypair);
328
+		fclose($ifp);
329
+		fclose($ofp);
330
+		try {
331
+			ParagonIE_Sodium_Compat::memzero($nonce);
332
+			ParagonIE_Sodium_Compat::memzero($ephKeypair);
333
+		} catch (SodiumException $ex) {
334
+			if (isset($ephKeypair)) {
335
+				unset($ephKeypair);
336
+			}
337
+		}
338
+		return $res;
339
+	}
340
+
341
+	/**
342
+	 * Calculate the BLAKE2b hash of a file.
343
+	 *
344
+	 * @param string      $filePath     Absolute path to a file on the filesystem
345
+	 * @param string|null $key          BLAKE2b key
346
+	 * @param int         $outputLength Length of hash output
347
+	 *
348
+	 * @return string                   BLAKE2b hash
349
+	 * @throws SodiumException
350
+	 * @throws TypeError
351
+	 * @psalm-suppress FailedTypeResolution
352
+	 */
353
+	public static function generichash($filePath, $key = '', $outputLength = 32)
354
+	{
355
+		/* Type checks: */
356
+		if (!is_string($filePath)) {
357
+			throw new TypeError('Argument 1 must be a string, ' . gettype($filePath) . ' given.');
358
+		}
359
+		if (!is_string($key)) {
360
+			if (is_null($key)) {
361
+				$key = '';
362
+			} else {
363
+				throw new TypeError('Argument 2 must be a string, ' . gettype($key) . ' given.');
364
+			}
365
+		}
366
+		if (!is_int($outputLength)) {
367
+			if (!is_numeric($outputLength)) {
368
+				throw new TypeError('Argument 3 must be an integer, ' . gettype($outputLength) . ' given.');
369
+			}
370
+			$outputLength = (int) $outputLength;
371
+		}
372
+
373
+		/* Input validation: */
374
+		if (!empty($key)) {
375
+			if (self::strlen($key) < ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_KEYBYTES_MIN) {
376
+				throw new TypeError('Argument 2 must be at least CRYPTO_GENERICHASH_KEYBYTES_MIN bytes');
377
+			}
378
+			if (self::strlen($key) > ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_KEYBYTES_MAX) {
379
+				throw new TypeError('Argument 2 must be at most CRYPTO_GENERICHASH_KEYBYTES_MAX bytes');
380
+			}
381
+		}
382
+		if ($outputLength < ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_BYTES_MIN) {
383
+			throw new SodiumException('Argument 3 must be at least CRYPTO_GENERICHASH_BYTES_MIN');
384
+		}
385
+		if ($outputLength > ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_BYTES_MAX) {
386
+			throw new SodiumException('Argument 3 must be at least CRYPTO_GENERICHASH_BYTES_MAX');
387
+		}
388
+
389
+		/** @var int $size */
390
+		$size = filesize($filePath);
391
+		if (!is_int($size)) {
392
+			throw new SodiumException('Could not obtain the file size');
393
+		}
394
+
395
+		/** @var resource $fp */
396
+		$fp = fopen($filePath, 'rb');
397
+		if (!is_resource($fp)) {
398
+			throw new SodiumException('Could not open input file for reading');
399
+		}
400
+		$ctx = ParagonIE_Sodium_Compat::crypto_generichash_init($key, $outputLength);
401
+		while ($size > 0) {
402
+			$blockSize = $size > 64
403
+				? 64
404
+				: $size;
405
+			$read = fread($fp, $blockSize);
406
+			if (!is_string($read)) {
407
+				throw new SodiumException('Could not read input file');
408
+			}
409
+			ParagonIE_Sodium_Compat::crypto_generichash_update($ctx, $read);
410
+			$size -= $blockSize;
411
+		}
412
+
413
+		fclose($fp);
414
+		return ParagonIE_Sodium_Compat::crypto_generichash_final($ctx, $outputLength);
415
+	}
416
+
417
+	/**
418
+	 * Encrypt a file (rather than a string). Uses less memory than
419
+	 * ParagonIE_Sodium_Compat::crypto_secretbox(), but produces
420
+	 * the same result.
421
+	 *
422
+	 * @param string $inputFile  Absolute path to a file on the filesystem
423
+	 * @param string $outputFile Absolute path to a file on the filesystem
424
+	 * @param string $nonce      Number to be used only once
425
+	 * @param string $key        Encryption key
426
+	 *
427
+	 * @return bool
428
+	 * @throws SodiumException
429
+	 * @throws TypeError
430
+	 */
431
+	public static function secretbox($inputFile, $outputFile, $nonce, $key)
432
+	{
433
+		/* Type checks: */
434
+		if (!is_string($inputFile)) {
435
+			throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given..');
436
+		}
437
+		if (!is_string($outputFile)) {
438
+			throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
439
+		}
440
+		if (!is_string($nonce)) {
441
+			throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
442
+		}
443
+
444
+		/* Input validation: */
445
+		if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_NONCEBYTES) {
446
+			throw new TypeError('Argument 3 must be CRYPTO_SECRETBOX_NONCEBYTES bytes');
447
+		}
448
+		if (!is_string($key)) {
449
+			throw new TypeError('Argument 4 must be a string, ' . gettype($key) . ' given.');
450
+		}
451
+		if (self::strlen($key) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_KEYBYTES) {
452
+			throw new TypeError('Argument 4 must be CRYPTO_SECRETBOX_KEYBYTES bytes');
453
+		}
454
+
455
+		/** @var int $size */
456
+		$size = filesize($inputFile);
457
+		if (!is_int($size)) {
458
+			throw new SodiumException('Could not obtain the file size');
459
+		}
460
+
461
+		/** @var resource $ifp */
462
+		$ifp = fopen($inputFile, 'rb');
463
+		if (!is_resource($ifp)) {
464
+			throw new SodiumException('Could not open input file for reading');
465
+		}
466
+
467
+		/** @var resource $ofp */
468
+		$ofp = fopen($outputFile, 'wb');
469
+		if (!is_resource($ofp)) {
470
+			fclose($ifp);
471
+			throw new SodiumException('Could not open output file for writing');
472
+		}
473
+
474
+		$res = self::secretbox_encrypt($ifp, $ofp, $size, $nonce, $key);
475
+		fclose($ifp);
476
+		fclose($ofp);
477
+		return $res;
478
+	}
479
+	/**
480
+	 * Seal a file (rather than a string). Uses less memory than
481
+	 * ParagonIE_Sodium_Compat::crypto_secretbox_open(), but produces
482
+	 * the same result.
483
+	 *
484
+	 * Warning: Does not protect against TOCTOU attacks. You should
485
+	 * just load the file into memory and use crypto_secretbox_open() if
486
+	 * you are worried about those.
487
+	 *
488
+	 * @param string $inputFile
489
+	 * @param string $outputFile
490
+	 * @param string $nonce
491
+	 * @param string $key
492
+	 * @return bool
493
+	 * @throws SodiumException
494
+	 * @throws TypeError
495
+	 */
496
+	public static function secretbox_open($inputFile, $outputFile, $nonce, $key)
497
+	{
498
+		/* Type checks: */
499
+		if (!is_string($inputFile)) {
500
+			throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
501
+		}
502
+		if (!is_string($outputFile)) {
503
+			throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
504
+		}
505
+		if (!is_string($nonce)) {
506
+			throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
507
+		}
508
+		if (!is_string($key)) {
509
+			throw new TypeError('Argument 4 must be a string, ' . gettype($key) . ' given.');
510
+		}
511
+
512
+		/* Input validation: */
513
+		if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_NONCEBYTES) {
514
+			throw new TypeError('Argument 4 must be CRYPTO_SECRETBOX_NONCEBYTES bytes');
515
+		}
516
+		if (self::strlen($key) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_KEYBYTES) {
517
+			throw new TypeError('Argument 4 must be CRYPTO_SECRETBOXBOX_KEYBYTES bytes');
518
+		}
519
+
520
+		/** @var int $size */
521
+		$size = filesize($inputFile);
522
+		if (!is_int($size)) {
523
+			throw new SodiumException('Could not obtain the file size');
524
+		}
525
+
526
+		/** @var resource $ifp */
527
+		$ifp = fopen($inputFile, 'rb');
528
+		if (!is_resource($ifp)) {
529
+			throw new SodiumException('Could not open input file for reading');
530
+		}
531
+
532
+		/** @var resource $ofp */
533
+		$ofp = fopen($outputFile, 'wb');
534
+		if (!is_resource($ofp)) {
535
+			fclose($ifp);
536
+			throw new SodiumException('Could not open output file for writing');
537
+		}
538
+
539
+		$res = self::secretbox_decrypt($ifp, $ofp, $size, $nonce, $key);
540
+		fclose($ifp);
541
+		fclose($ofp);
542
+		try {
543
+			ParagonIE_Sodium_Compat::memzero($key);
544
+		} catch (SodiumException $ex) {
545
+			/** @psalm-suppress PossiblyUndefinedVariable */
546
+			unset($key);
547
+		}
548
+		return $res;
549
+	}
550
+
551
+	/**
552
+	 * Sign a file (rather than a string). Uses less memory than
553
+	 * ParagonIE_Sodium_Compat::crypto_sign_detached(), but produces
554
+	 * the same result.
555
+	 *
556
+	 * @param string $filePath  Absolute path to a file on the filesystem
557
+	 * @param string $secretKey Secret signing key
558
+	 *
559
+	 * @return string           Ed25519 signature
560
+	 * @throws SodiumException
561
+	 * @throws TypeError
562
+	 */
563
+	public static function sign($filePath, $secretKey)
564
+	{
565
+		/* Type checks: */
566
+		if (!is_string($filePath)) {
567
+			throw new TypeError('Argument 1 must be a string, ' . gettype($filePath) . ' given.');
568
+		}
569
+		if (!is_string($secretKey)) {
570
+			throw new TypeError('Argument 2 must be a string, ' . gettype($secretKey) . ' given.');
571
+		}
572
+
573
+		/* Input validation: */
574
+		if (self::strlen($secretKey) !== ParagonIE_Sodium_Compat::CRYPTO_SIGN_SECRETKEYBYTES) {
575
+			throw new TypeError('Argument 2 must be CRYPTO_SIGN_SECRETKEYBYTES bytes');
576
+		}
577
+		if (PHP_INT_SIZE === 4) {
578
+			return self::sign_core32($filePath, $secretKey);
579
+		}
580
+
581
+		/** @var int $size */
582
+		$size = filesize($filePath);
583
+		if (!is_int($size)) {
584
+			throw new SodiumException('Could not obtain the file size');
585
+		}
586
+
587
+		/** @var resource $fp */
588
+		$fp = fopen($filePath, 'rb');
589
+		if (!is_resource($fp)) {
590
+			throw new SodiumException('Could not open input file for reading');
591
+		}
592
+
593
+		/** @var string $az */
594
+		$az = hash('sha512', self::substr($secretKey, 0, 32), true);
595
+
596
+		$az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
597
+		$az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);
598
+
599
+		$hs = hash_init('sha512');
600
+		self::hash_update($hs, self::substr($az, 32, 32));
601
+		/** @var resource $hs */
602
+		$hs = self::updateHashWithFile($hs, $fp, $size);
603
+
604
+		/** @var string $nonceHash */
605
+		$nonceHash = hash_final($hs, true);
606
+
607
+		/** @var string $pk */
608
+		$pk = self::substr($secretKey, 32, 32);
609
+
610
+		/** @var string $nonce */
611
+		$nonce = ParagonIE_Sodium_Core_Ed25519::sc_reduce($nonceHash) . self::substr($nonceHash, 32);
612
+
613
+		/** @var string $sig */
614
+		$sig = ParagonIE_Sodium_Core_Ed25519::ge_p3_tobytes(
615
+			ParagonIE_Sodium_Core_Ed25519::ge_scalarmult_base($nonce)
616
+		);
617
+
618
+		$hs = hash_init('sha512');
619
+		self::hash_update($hs, self::substr($sig, 0, 32));
620
+		self::hash_update($hs, self::substr($pk, 0, 32));
621
+		/** @var resource $hs */
622
+		$hs = self::updateHashWithFile($hs, $fp, $size);
623
+
624
+		/** @var string $hramHash */
625
+		$hramHash = hash_final($hs, true);
626
+
627
+		/** @var string $hram */
628
+		$hram = ParagonIE_Sodium_Core_Ed25519::sc_reduce($hramHash);
629
+
630
+		/** @var string $sigAfter */
631
+		$sigAfter = ParagonIE_Sodium_Core_Ed25519::sc_muladd($hram, $az, $nonce);
632
+
633
+		/** @var string $sig */
634
+		$sig = self::substr($sig, 0, 32) . self::substr($sigAfter, 0, 32);
635
+
636
+		try {
637
+			ParagonIE_Sodium_Compat::memzero($az);
638
+		} catch (SodiumException $ex) {
639
+			$az = null;
640
+		}
641
+		fclose($fp);
642
+		return $sig;
643
+	}
644
+
645
+	/**
646
+	 * Verify a file (rather than a string). Uses less memory than
647
+	 * ParagonIE_Sodium_Compat::crypto_sign_verify_detached(), but
648
+	 * produces the same result.
649
+	 *
650
+	 * @param string $sig       Ed25519 signature
651
+	 * @param string $filePath  Absolute path to a file on the filesystem
652
+	 * @param string $publicKey Signing public key
653
+	 *
654
+	 * @return bool
655
+	 * @throws SodiumException
656
+	 * @throws TypeError
657
+	 * @throws Exception
658
+	 */
659
+	public static function verify($sig, $filePath, $publicKey)
660
+	{
661
+		/* Type checks: */
662
+		if (!is_string($sig)) {
663
+			throw new TypeError('Argument 1 must be a string, ' . gettype($sig) . ' given.');
664
+		}
665
+		if (!is_string($filePath)) {
666
+			throw new TypeError('Argument 2 must be a string, ' . gettype($filePath) . ' given.');
667
+		}
668
+		if (!is_string($publicKey)) {
669
+			throw new TypeError('Argument 3 must be a string, ' . gettype($publicKey) . ' given.');
670
+		}
671
+
672
+		/* Input validation: */
673
+		if (self::strlen($sig) !== ParagonIE_Sodium_Compat::CRYPTO_SIGN_BYTES) {
674
+			throw new TypeError('Argument 1 must be CRYPTO_SIGN_BYTES bytes');
675
+		}
676
+		if (self::strlen($publicKey) !== ParagonIE_Sodium_Compat::CRYPTO_SIGN_PUBLICKEYBYTES) {
677
+			throw new TypeError('Argument 3 must be CRYPTO_SIGN_PUBLICKEYBYTES bytes');
678
+		}
679
+		if (self::strlen($sig) < 64) {
680
+			throw new SodiumException('Signature is too short');
681
+		}
682
+
683
+		if (PHP_INT_SIZE === 4) {
684
+			return self::verify_core32($sig, $filePath, $publicKey);
685
+		}
686
+
687
+		/* Security checks */
688
+		if (
689
+			(ParagonIE_Sodium_Core_Ed25519::chrToInt($sig[63]) & 240)
690
+				&&
691
+			ParagonIE_Sodium_Core_Ed25519::check_S_lt_L(self::substr($sig, 32, 32))
692
+		) {
693
+			throw new SodiumException('S < L - Invalid signature');
694
+		}
695
+		if (ParagonIE_Sodium_Core_Ed25519::small_order($sig)) {
696
+			throw new SodiumException('Signature is on too small of an order');
697
+		}
698
+		if ((self::chrToInt($sig[63]) & 224) !== 0) {
699
+			throw new SodiumException('Invalid signature');
700
+		}
701
+		$d = 0;
702
+		for ($i = 0; $i < 32; ++$i) {
703
+			$d |= self::chrToInt($publicKey[$i]);
704
+		}
705
+		if ($d === 0) {
706
+			throw new SodiumException('All zero public key');
707
+		}
708
+
709
+		/** @var int $size */
710
+		$size = filesize($filePath);
711
+		if (!is_int($size)) {
712
+			throw new SodiumException('Could not obtain the file size');
713
+		}
714
+
715
+		/** @var resource $fp */
716
+		$fp = fopen($filePath, 'rb');
717
+		if (!is_resource($fp)) {
718
+			throw new SodiumException('Could not open input file for reading');
719
+		}
720
+
721
+		/** @var bool The original value of ParagonIE_Sodium_Compat::$fastMult */
722
+		$orig = ParagonIE_Sodium_Compat::$fastMult;
723
+
724
+		// Set ParagonIE_Sodium_Compat::$fastMult to true to speed up verification.
725
+		ParagonIE_Sodium_Compat::$fastMult = true;
726
+
727
+		/** @var ParagonIE_Sodium_Core_Curve25519_Ge_P3 $A */
728
+		$A = ParagonIE_Sodium_Core_Ed25519::ge_frombytes_negate_vartime($publicKey);
729
+
730
+		$hs = hash_init('sha512');
731
+		self::hash_update($hs, self::substr($sig, 0, 32));
732
+		self::hash_update($hs, self::substr($publicKey, 0, 32));
733
+		/** @var resource $hs */
734
+		$hs = self::updateHashWithFile($hs, $fp, $size);
735
+		/** @var string $hDigest */
736
+		$hDigest = hash_final($hs, true);
737
+
738
+		/** @var string $h */
739
+		$h = ParagonIE_Sodium_Core_Ed25519::sc_reduce($hDigest) . self::substr($hDigest, 32);
740
+
741
+		/** @var ParagonIE_Sodium_Core_Curve25519_Ge_P2 $R */
742
+		$R = ParagonIE_Sodium_Core_Ed25519::ge_double_scalarmult_vartime(
743
+			$h,
744
+			$A,
745
+			self::substr($sig, 32)
746
+		);
747
+
748
+		/** @var string $rcheck */
749
+		$rcheck = ParagonIE_Sodium_Core_Ed25519::ge_tobytes($R);
750
+
751
+		// Close the file handle
752
+		fclose($fp);
753
+
754
+		// Reset ParagonIE_Sodium_Compat::$fastMult to what it was before.
755
+		ParagonIE_Sodium_Compat::$fastMult = $orig;
756
+		return self::verify_32($rcheck, self::substr($sig, 0, 32));
757
+	}
758
+
759
+	/**
760
+	 * @param resource $ifp
761
+	 * @param resource $ofp
762
+	 * @param int      $mlen
763
+	 * @param string   $nonce
764
+	 * @param string   $boxKeypair
765
+	 * @return bool
766
+	 * @throws SodiumException
767
+	 * @throws TypeError
768
+	 */
769
+	protected static function box_encrypt($ifp, $ofp, $mlen, $nonce, $boxKeypair)
770
+	{
771
+		if (PHP_INT_SIZE === 4) {
772
+			return self::secretbox_encrypt(
773
+				$ifp,
774
+				$ofp,
775
+				$mlen,
776
+				$nonce,
777
+				ParagonIE_Sodium_Crypto32::box_beforenm(
778
+					ParagonIE_Sodium_Crypto32::box_secretkey($boxKeypair),
779
+					ParagonIE_Sodium_Crypto32::box_publickey($boxKeypair)
780
+				)
781
+			);
782
+		}
783
+		return self::secretbox_encrypt(
784
+			$ifp,
785
+			$ofp,
786
+			$mlen,
787
+			$nonce,
788
+			ParagonIE_Sodium_Crypto::box_beforenm(
789
+				ParagonIE_Sodium_Crypto::box_secretkey($boxKeypair),
790
+				ParagonIE_Sodium_Crypto::box_publickey($boxKeypair)
791
+			)
792
+		);
793
+	}
794
+
795
+
796
+	/**
797
+	 * @param resource $ifp
798
+	 * @param resource $ofp
799
+	 * @param int      $mlen
800
+	 * @param string   $nonce
801
+	 * @param string   $boxKeypair
802
+	 * @return bool
803
+	 * @throws SodiumException
804
+	 * @throws TypeError
805
+	 */
806
+	protected static function box_decrypt($ifp, $ofp, $mlen, $nonce, $boxKeypair)
807
+	{
808
+		if (PHP_INT_SIZE === 4) {
809
+			return self::secretbox_decrypt(
810
+				$ifp,
811
+				$ofp,
812
+				$mlen,
813
+				$nonce,
814
+				ParagonIE_Sodium_Crypto32::box_beforenm(
815
+					ParagonIE_Sodium_Crypto32::box_secretkey($boxKeypair),
816
+					ParagonIE_Sodium_Crypto32::box_publickey($boxKeypair)
817
+				)
818
+			);
819
+		}
820
+		return self::secretbox_decrypt(
821
+			$ifp,
822
+			$ofp,
823
+			$mlen,
824
+			$nonce,
825
+			ParagonIE_Sodium_Crypto::box_beforenm(
826
+				ParagonIE_Sodium_Crypto::box_secretkey($boxKeypair),
827
+				ParagonIE_Sodium_Crypto::box_publickey($boxKeypair)
828
+			)
829
+		);
830
+	}
831
+
832
+	/**
833
+	 * Encrypt a file
834
+	 *
835
+	 * @param resource $ifp
836
+	 * @param resource $ofp
837
+	 * @param int $mlen
838
+	 * @param string $nonce
839
+	 * @param string $key
840
+	 * @return bool
841
+	 * @throws SodiumException
842
+	 * @throws TypeError
843
+	 */
844
+	protected static function secretbox_encrypt($ifp, $ofp, $mlen, $nonce, $key)
845
+	{
846
+		if (PHP_INT_SIZE === 4) {
847
+			return self::secretbox_encrypt_core32($ifp, $ofp, $mlen, $nonce, $key);
848
+		}
849
+
850
+		$plaintext = fread($ifp, 32);
851
+		if (!is_string($plaintext)) {
852
+			throw new SodiumException('Could not read input file');
853
+		}
854
+		$first32 = self::ftell($ifp);
855
+
856
+		/** @var string $subkey */
857
+		$subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);
858
+
859
+		/** @var string $realNonce */
860
+		$realNonce = ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);
861
+
862
+		/** @var string $block0 */
863
+		$block0 = str_repeat("\x00", 32);
864
+
865
+		/** @var int $mlen - Length of the plaintext message */
866
+		$mlen0 = $mlen;
867
+		if ($mlen0 > 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES) {
868
+			$mlen0 = 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES;
869
+		}
870
+		$block0 .= ParagonIE_Sodium_Core_Util::substr($plaintext, 0, $mlen0);
871
+
872
+		/** @var string $block0 */
873
+		$block0 = ParagonIE_Sodium_Core_Salsa20::salsa20_xor(
874
+			$block0,
875
+			$realNonce,
876
+			$subkey
877
+		);
878
+
879
+		$state = new ParagonIE_Sodium_Core_Poly1305_State(
880
+			ParagonIE_Sodium_Core_Util::substr(
881
+				$block0,
882
+				0,
883
+				ParagonIE_Sodium_Crypto::onetimeauth_poly1305_KEYBYTES
884
+			)
885
+		);
886
+
887
+		// Pre-write 16 blank bytes for the Poly1305 tag
888
+		$start = self::ftell($ofp);
889
+		fwrite($ofp, str_repeat("\x00", 16));
890
+
891
+		/** @var string $c */
892
+		$cBlock = ParagonIE_Sodium_Core_Util::substr(
893
+			$block0,
894
+			ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES
895
+		);
896
+		$state->update($cBlock);
897
+		fwrite($ofp, $cBlock);
898
+		$mlen -= 32;
899
+
900
+		/** @var int $iter */
901
+		$iter = 1;
902
+
903
+		/** @var int $incr */
904
+		$incr = self::BUFFER_SIZE >> 6;
905
+
906
+		/*
907 907
          * Set the cursor to the end of the first half-block. All future bytes will
908 908
          * generated from salsa20_xor_ic, starting from 1 (second block).
909 909
          */
910
-        fseek($ifp, $first32, SEEK_SET);
911
-
912
-        while ($mlen > 0) {
913
-            $blockSize = $mlen > self::BUFFER_SIZE
914
-                ? self::BUFFER_SIZE
915
-                : $mlen;
916
-            $plaintext = fread($ifp, $blockSize);
917
-            if (!is_string($plaintext)) {
918
-                throw new SodiumException('Could not read input file');
919
-            }
920
-            $cBlock = ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
921
-                $plaintext,
922
-                $realNonce,
923
-                $iter,
924
-                $subkey
925
-            );
926
-            fwrite($ofp, $cBlock, $blockSize);
927
-            $state->update($cBlock);
928
-
929
-            $mlen -= $blockSize;
930
-            $iter += $incr;
931
-        }
932
-        try {
933
-            ParagonIE_Sodium_Compat::memzero($block0);
934
-            ParagonIE_Sodium_Compat::memzero($subkey);
935
-        } catch (SodiumException $ex) {
936
-            $block0 = null;
937
-            $subkey = null;
938
-        }
939
-        $end = self::ftell($ofp);
940
-
941
-        /*
910
+		fseek($ifp, $first32, SEEK_SET);
911
+
912
+		while ($mlen > 0) {
913
+			$blockSize = $mlen > self::BUFFER_SIZE
914
+				? self::BUFFER_SIZE
915
+				: $mlen;
916
+			$plaintext = fread($ifp, $blockSize);
917
+			if (!is_string($plaintext)) {
918
+				throw new SodiumException('Could not read input file');
919
+			}
920
+			$cBlock = ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
921
+				$plaintext,
922
+				$realNonce,
923
+				$iter,
924
+				$subkey
925
+			);
926
+			fwrite($ofp, $cBlock, $blockSize);
927
+			$state->update($cBlock);
928
+
929
+			$mlen -= $blockSize;
930
+			$iter += $incr;
931
+		}
932
+		try {
933
+			ParagonIE_Sodium_Compat::memzero($block0);
934
+			ParagonIE_Sodium_Compat::memzero($subkey);
935
+		} catch (SodiumException $ex) {
936
+			$block0 = null;
937
+			$subkey = null;
938
+		}
939
+		$end = self::ftell($ofp);
940
+
941
+		/*
942 942
          * Write the Poly1305 authentication tag that provides integrity
943 943
          * over the ciphertext (encrypt-then-MAC)
944 944
          */
945
-        fseek($ofp, $start, SEEK_SET);
946
-        fwrite($ofp, $state->finish(), ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_MACBYTES);
947
-        fseek($ofp, $end, SEEK_SET);
948
-        unset($state);
949
-
950
-        return true;
951
-    }
952
-
953
-    /**
954
-     * Decrypt a file
955
-     *
956
-     * @param resource $ifp
957
-     * @param resource $ofp
958
-     * @param int $mlen
959
-     * @param string $nonce
960
-     * @param string $key
961
-     * @return bool
962
-     * @throws SodiumException
963
-     * @throws TypeError
964
-     */
965
-    protected static function secretbox_decrypt($ifp, $ofp, $mlen, $nonce, $key)
966
-    {
967
-        if (PHP_INT_SIZE === 4) {
968
-            return self::secretbox_decrypt_core32($ifp, $ofp, $mlen, $nonce, $key);
969
-        }
970
-        $tag = fread($ifp, 16);
971
-        if (!is_string($tag)) {
972
-            throw new SodiumException('Could not read input file');
973
-        }
974
-
975
-        /** @var string $subkey */
976
-        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);
977
-
978
-        /** @var string $realNonce */
979
-        $realNonce = ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);
980
-
981
-        /** @var string $block0 */
982
-        $block0 = ParagonIE_Sodium_Core_Salsa20::salsa20(
983
-            64,
984
-            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
985
-            $subkey
986
-        );
987
-
988
-        /* Verify the Poly1305 MAC -before- attempting to decrypt! */
989
-        $state = new ParagonIE_Sodium_Core_Poly1305_State(self::substr($block0, 0, 32));
990
-        if (!self::onetimeauth_verify($state, $ifp, $tag, $mlen)) {
991
-            throw new SodiumException('Invalid MAC');
992
-        }
993
-
994
-        /*
945
+		fseek($ofp, $start, SEEK_SET);
946
+		fwrite($ofp, $state->finish(), ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_MACBYTES);
947
+		fseek($ofp, $end, SEEK_SET);
948
+		unset($state);
949
+
950
+		return true;
951
+	}
952
+
953
+	/**
954
+	 * Decrypt a file
955
+	 *
956
+	 * @param resource $ifp
957
+	 * @param resource $ofp
958
+	 * @param int $mlen
959
+	 * @param string $nonce
960
+	 * @param string $key
961
+	 * @return bool
962
+	 * @throws SodiumException
963
+	 * @throws TypeError
964
+	 */
965
+	protected static function secretbox_decrypt($ifp, $ofp, $mlen, $nonce, $key)
966
+	{
967
+		if (PHP_INT_SIZE === 4) {
968
+			return self::secretbox_decrypt_core32($ifp, $ofp, $mlen, $nonce, $key);
969
+		}
970
+		$tag = fread($ifp, 16);
971
+		if (!is_string($tag)) {
972
+			throw new SodiumException('Could not read input file');
973
+		}
974
+
975
+		/** @var string $subkey */
976
+		$subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);
977
+
978
+		/** @var string $realNonce */
979
+		$realNonce = ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);
980
+
981
+		/** @var string $block0 */
982
+		$block0 = ParagonIE_Sodium_Core_Salsa20::salsa20(
983
+			64,
984
+			ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
985
+			$subkey
986
+		);
987
+
988
+		/* Verify the Poly1305 MAC -before- attempting to decrypt! */
989
+		$state = new ParagonIE_Sodium_Core_Poly1305_State(self::substr($block0, 0, 32));
990
+		if (!self::onetimeauth_verify($state, $ifp, $tag, $mlen)) {
991
+			throw new SodiumException('Invalid MAC');
992
+		}
993
+
994
+		/*
995 995
          * Set the cursor to the end of the first half-block. All future bytes will
996 996
          * generated from salsa20_xor_ic, starting from 1 (second block).
997 997
          */
998
-        $first32 = fread($ifp, 32);
999
-        if (!is_string($first32)) {
1000
-            throw new SodiumException('Could not read input file');
1001
-        }
1002
-        $first32len = self::strlen($first32);
1003
-        fwrite(
1004
-            $ofp,
1005
-            self::xorStrings(
1006
-                self::substr($block0, 32, $first32len),
1007
-                self::substr($first32, 0, $first32len)
1008
-            )
1009
-        );
1010
-        $mlen -= 32;
1011
-
1012
-        /** @var int $iter */
1013
-        $iter = 1;
1014
-
1015
-        /** @var int $incr */
1016
-        $incr = self::BUFFER_SIZE >> 6;
1017
-
1018
-        /* Decrypts ciphertext, writes to output file. */
1019
-        while ($mlen > 0) {
1020
-            $blockSize = $mlen > self::BUFFER_SIZE
1021
-                ? self::BUFFER_SIZE
1022
-                : $mlen;
1023
-            $ciphertext = fread($ifp, $blockSize);
1024
-            if (!is_string($ciphertext)) {
1025
-                throw new SodiumException('Could not read input file');
1026
-            }
1027
-            $pBlock = ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
1028
-                $ciphertext,
1029
-                $realNonce,
1030
-                $iter,
1031
-                $subkey
1032
-            );
1033
-            fwrite($ofp, $pBlock, $blockSize);
1034
-            $mlen -= $blockSize;
1035
-            $iter += $incr;
1036
-        }
1037
-        return true;
1038
-    }
1039
-
1040
-    /**
1041
-     * @param ParagonIE_Sodium_Core_Poly1305_State $state
1042
-     * @param resource $ifp
1043
-     * @param string $tag
1044
-     * @param int $mlen
1045
-     * @return bool
1046
-     * @throws SodiumException
1047
-     * @throws TypeError
1048
-     */
1049
-    protected static function onetimeauth_verify(
1050
-        ParagonIE_Sodium_Core_Poly1305_State $state,
1051
-        $ifp,
1052
-        $tag = '',
1053
-        $mlen = 0
1054
-    ) {
1055
-        /** @var int $pos */
1056
-        $pos = self::ftell($ifp);
1057
-
1058
-        /** @var int $iter */
1059
-        $iter = 1;
1060
-
1061
-        /** @var int $incr */
1062
-        $incr = self::BUFFER_SIZE >> 6;
1063
-
1064
-        while ($mlen > 0) {
1065
-            $blockSize = $mlen > self::BUFFER_SIZE
1066
-                ? self::BUFFER_SIZE
1067
-                : $mlen;
1068
-            $ciphertext = fread($ifp, $blockSize);
1069
-            if (!is_string($ciphertext)) {
1070
-                throw new SodiumException('Could not read input file');
1071
-            }
1072
-            $state->update($ciphertext);
1073
-            $mlen -= $blockSize;
1074
-            $iter += $incr;
1075
-        }
1076
-        $res = ParagonIE_Sodium_Core_Util::verify_16($tag, $state->finish());
1077
-
1078
-        fseek($ifp, $pos, SEEK_SET);
1079
-        return $res;
1080
-    }
1081
-
1082
-    /**
1083
-     * Update a hash context with the contents of a file, without
1084
-     * loading the entire file into memory.
1085
-     *
1086
-     * @param resource|HashContext $hash
1087
-     * @param resource $fp
1088
-     * @param int $size
1089
-     * @return resource|object Resource on PHP < 7.2, HashContext object on PHP >= 7.2
1090
-     * @throws SodiumException
1091
-     * @throws TypeError
1092
-     * @psalm-suppress PossiblyInvalidArgument
1093
-     *                 PHP 7.2 changes from a resource to an object,
1094
-     *                 which causes Psalm to complain about an error.
1095
-     * @psalm-suppress TypeCoercion
1096
-     *                 Ditto.
1097
-     */
1098
-    public static function updateHashWithFile($hash, $fp, $size = 0)
1099
-    {
1100
-        /* Type checks: */
1101
-        if (PHP_VERSION_ID < 70200) {
1102
-            if (!is_resource($hash)) {
1103
-                throw new TypeError('Argument 1 must be a resource, ' . gettype($hash) . ' given.');
1104
-            }
1105
-        } else {
1106
-            if (!is_object($hash)) {
1107
-                throw new TypeError('Argument 1 must be an object (PHP 7.2+), ' . gettype($hash) . ' given.');
1108
-            }
1109
-        }
1110
-
1111
-        if (!is_resource($fp)) {
1112
-            throw new TypeError('Argument 2 must be a resource, ' . gettype($fp) . ' given.');
1113
-        }
1114
-        if (!is_int($size)) {
1115
-            throw new TypeError('Argument 3 must be an integer, ' . gettype($size) . ' given.');
1116
-        }
1117
-
1118
-        /** @var int $originalPosition */
1119
-        $originalPosition = self::ftell($fp);
1120
-
1121
-        // Move file pointer to beginning of file
1122
-        fseek($fp, 0, SEEK_SET);
1123
-        for ($i = 0; $i < $size; $i += self::BUFFER_SIZE) {
1124
-            /** @var string|bool $message */
1125
-            $message = fread(
1126
-                $fp,
1127
-                ($size - $i) > self::BUFFER_SIZE
1128
-                    ? $size - $i
1129
-                    : self::BUFFER_SIZE
1130
-            );
1131
-            if (!is_string($message)) {
1132
-                throw new SodiumException('Unexpected error reading from file.');
1133
-            }
1134
-            /** @var string $message */
1135
-            /** @psalm-suppress InvalidArgument */
1136
-            self::hash_update($hash, $message);
1137
-        }
1138
-        // Reset file pointer's position
1139
-        fseek($fp, $originalPosition, SEEK_SET);
1140
-        return $hash;
1141
-    }
1142
-
1143
-    /**
1144
-     * Sign a file (rather than a string). Uses less memory than
1145
-     * ParagonIE_Sodium_Compat::crypto_sign_detached(), but produces
1146
-     * the same result. (32-bit)
1147
-     *
1148
-     * @param string $filePath  Absolute path to a file on the filesystem
1149
-     * @param string $secretKey Secret signing key
1150
-     *
1151
-     * @return string           Ed25519 signature
1152
-     * @throws SodiumException
1153
-     * @throws TypeError
1154
-     */
1155
-    private static function sign_core32($filePath, $secretKey)
1156
-    {
1157
-        /** @var int|bool $size */
1158
-        $size = filesize($filePath);
1159
-        if (!is_int($size)) {
1160
-            throw new SodiumException('Could not obtain the file size');
1161
-        }
1162
-        /** @var int $size */
1163
-
1164
-        /** @var resource|bool $fp */
1165
-        $fp = fopen($filePath, 'rb');
1166
-        if (!is_resource($fp)) {
1167
-            throw new SodiumException('Could not open input file for reading');
1168
-        }
1169
-        /** @var resource $fp */
1170
-
1171
-        /** @var string $az */
1172
-        $az = hash('sha512', self::substr($secretKey, 0, 32), true);
1173
-
1174
-        $az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
1175
-        $az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);
1176
-
1177
-        $hs = hash_init('sha512');
1178
-        self::hash_update($hs, self::substr($az, 32, 32));
1179
-        /** @var resource $hs */
1180
-        $hs = self::updateHashWithFile($hs, $fp, $size);
1181
-
1182
-        /** @var string $nonceHash */
1183
-        $nonceHash = hash_final($hs, true);
1184
-
1185
-        /** @var string $pk */
1186
-        $pk = self::substr($secretKey, 32, 32);
1187
-
1188
-        /** @var string $nonce */
1189
-        $nonce = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($nonceHash) . self::substr($nonceHash, 32);
1190
-
1191
-        /** @var string $sig */
1192
-        $sig = ParagonIE_Sodium_Core32_Ed25519::ge_p3_tobytes(
1193
-            ParagonIE_Sodium_Core32_Ed25519::ge_scalarmult_base($nonce)
1194
-        );
1195
-
1196
-        $hs = hash_init('sha512');
1197
-        self::hash_update($hs, self::substr($sig, 0, 32));
1198
-        self::hash_update($hs, self::substr($pk, 0, 32));
1199
-        /** @var resource $hs */
1200
-        $hs = self::updateHashWithFile($hs, $fp, $size);
1201
-
1202
-        /** @var string $hramHash */
1203
-        $hramHash = hash_final($hs, true);
1204
-
1205
-        /** @var string $hram */
1206
-        $hram = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($hramHash);
1207
-
1208
-        /** @var string $sigAfter */
1209
-        $sigAfter = ParagonIE_Sodium_Core32_Ed25519::sc_muladd($hram, $az, $nonce);
1210
-
1211
-        /** @var string $sig */
1212
-        $sig = self::substr($sig, 0, 32) . self::substr($sigAfter, 0, 32);
1213
-
1214
-        try {
1215
-            ParagonIE_Sodium_Compat::memzero($az);
1216
-        } catch (SodiumException $ex) {
1217
-            $az = null;
1218
-        }
1219
-        fclose($fp);
1220
-        return $sig;
1221
-    }
1222
-
1223
-    /**
1224
-     *
1225
-     * Verify a file (rather than a string). Uses less memory than
1226
-     * ParagonIE_Sodium_Compat::crypto_sign_verify_detached(), but
1227
-     * produces the same result. (32-bit)
1228
-     *
1229
-     * @param string $sig       Ed25519 signature
1230
-     * @param string $filePath  Absolute path to a file on the filesystem
1231
-     * @param string $publicKey Signing public key
1232
-     *
1233
-     * @return bool
1234
-     * @throws SodiumException
1235
-     * @throws Exception
1236
-     */
1237
-    public static function verify_core32($sig, $filePath, $publicKey)
1238
-    {
1239
-        /* Security checks */
1240
-        if (ParagonIE_Sodium_Core32_Ed25519::check_S_lt_L(self::substr($sig, 32, 32))) {
1241
-            throw new SodiumException('S < L - Invalid signature');
1242
-        }
1243
-        if (ParagonIE_Sodium_Core32_Ed25519::small_order($sig)) {
1244
-            throw new SodiumException('Signature is on too small of an order');
1245
-        }
1246
-        if ((self::chrToInt($sig[63]) & 224) !== 0) {
1247
-            throw new SodiumException('Invalid signature');
1248
-        }
1249
-        $d = 0;
1250
-        for ($i = 0; $i < 32; ++$i) {
1251
-            $d |= self::chrToInt($publicKey[$i]);
1252
-        }
1253
-        if ($d === 0) {
1254
-            throw new SodiumException('All zero public key');
1255
-        }
1256
-
1257
-        /** @var int|bool $size */
1258
-        $size = filesize($filePath);
1259
-        if (!is_int($size)) {
1260
-            throw new SodiumException('Could not obtain the file size');
1261
-        }
1262
-        /** @var int $size */
1263
-
1264
-        /** @var resource|bool $fp */
1265
-        $fp = fopen($filePath, 'rb');
1266
-        if (!is_resource($fp)) {
1267
-            throw new SodiumException('Could not open input file for reading');
1268
-        }
1269
-        /** @var resource $fp */
1270
-
1271
-        /** @var bool The original value of ParagonIE_Sodium_Compat::$fastMult */
1272
-        $orig = ParagonIE_Sodium_Compat::$fastMult;
1273
-
1274
-        // Set ParagonIE_Sodium_Compat::$fastMult to true to speed up verification.
1275
-        ParagonIE_Sodium_Compat::$fastMult = true;
1276
-
1277
-        /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A */
1278
-        $A = ParagonIE_Sodium_Core32_Ed25519::ge_frombytes_negate_vartime($publicKey);
1279
-
1280
-        $hs = hash_init('sha512');
1281
-        self::hash_update($hs, self::substr($sig, 0, 32));
1282
-        self::hash_update($hs, self::substr($publicKey, 0, 32));
1283
-        /** @var resource $hs */
1284
-        $hs = self::updateHashWithFile($hs, $fp, $size);
1285
-        /** @var string $hDigest */
1286
-        $hDigest = hash_final($hs, true);
1287
-
1288
-        /** @var string $h */
1289
-        $h = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($hDigest) . self::substr($hDigest, 32);
1290
-
1291
-        /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $R */
1292
-        $R = ParagonIE_Sodium_Core32_Ed25519::ge_double_scalarmult_vartime(
1293
-            $h,
1294
-            $A,
1295
-            self::substr($sig, 32)
1296
-        );
1297
-
1298
-        /** @var string $rcheck */
1299
-        $rcheck = ParagonIE_Sodium_Core32_Ed25519::ge_tobytes($R);
1300
-
1301
-        // Close the file handle
1302
-        fclose($fp);
1303
-
1304
-        // Reset ParagonIE_Sodium_Compat::$fastMult to what it was before.
1305
-        ParagonIE_Sodium_Compat::$fastMult = $orig;
1306
-        return self::verify_32($rcheck, self::substr($sig, 0, 32));
1307
-    }
1308
-
1309
-    /**
1310
-     * Encrypt a file (32-bit)
1311
-     *
1312
-     * @param resource $ifp
1313
-     * @param resource $ofp
1314
-     * @param int $mlen
1315
-     * @param string $nonce
1316
-     * @param string $key
1317
-     * @return bool
1318
-     * @throws SodiumException
1319
-     * @throws TypeError
1320
-     */
1321
-    protected static function secretbox_encrypt_core32($ifp, $ofp, $mlen, $nonce, $key)
1322
-    {
1323
-        $plaintext = fread($ifp, 32);
1324
-        if (!is_string($plaintext)) {
1325
-            throw new SodiumException('Could not read input file');
1326
-        }
1327
-        $first32 = self::ftell($ifp);
1328
-
1329
-        /** @var string $subkey */
1330
-        $subkey = ParagonIE_Sodium_Core32_HSalsa20::hsalsa20($nonce, $key);
1331
-
1332
-        /** @var string $realNonce */
1333
-        $realNonce = ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8);
1334
-
1335
-        /** @var string $block0 */
1336
-        $block0 = str_repeat("\x00", 32);
1337
-
1338
-        /** @var int $mlen - Length of the plaintext message */
1339
-        $mlen0 = $mlen;
1340
-        if ($mlen0 > 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES) {
1341
-            $mlen0 = 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES;
1342
-        }
1343
-        $block0 .= ParagonIE_Sodium_Core32_Util::substr($plaintext, 0, $mlen0);
1344
-
1345
-        /** @var string $block0 */
1346
-        $block0 = ParagonIE_Sodium_Core32_Salsa20::salsa20_xor(
1347
-            $block0,
1348
-            $realNonce,
1349
-            $subkey
1350
-        );
1351
-
1352
-        $state = new ParagonIE_Sodium_Core32_Poly1305_State(
1353
-            ParagonIE_Sodium_Core32_Util::substr(
1354
-                $block0,
1355
-                0,
1356
-                ParagonIE_Sodium_Crypto::onetimeauth_poly1305_KEYBYTES
1357
-            )
1358
-        );
1359
-
1360
-        // Pre-write 16 blank bytes for the Poly1305 tag
1361
-        $start = self::ftell($ofp);
1362
-        fwrite($ofp, str_repeat("\x00", 16));
1363
-
1364
-        /** @var string $c */
1365
-        $cBlock = ParagonIE_Sodium_Core32_Util::substr(
1366
-            $block0,
1367
-            ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES
1368
-        );
1369
-        $state->update($cBlock);
1370
-        fwrite($ofp, $cBlock);
1371
-        $mlen -= 32;
1372
-
1373
-        /** @var int $iter */
1374
-        $iter = 1;
1375
-
1376
-        /** @var int $incr */
1377
-        $incr = self::BUFFER_SIZE >> 6;
1378
-
1379
-        /*
998
+		$first32 = fread($ifp, 32);
999
+		if (!is_string($first32)) {
1000
+			throw new SodiumException('Could not read input file');
1001
+		}
1002
+		$first32len = self::strlen($first32);
1003
+		fwrite(
1004
+			$ofp,
1005
+			self::xorStrings(
1006
+				self::substr($block0, 32, $first32len),
1007
+				self::substr($first32, 0, $first32len)
1008
+			)
1009
+		);
1010
+		$mlen -= 32;
1011
+
1012
+		/** @var int $iter */
1013
+		$iter = 1;
1014
+
1015
+		/** @var int $incr */
1016
+		$incr = self::BUFFER_SIZE >> 6;
1017
+
1018
+		/* Decrypts ciphertext, writes to output file. */
1019
+		while ($mlen > 0) {
1020
+			$blockSize = $mlen > self::BUFFER_SIZE
1021
+				? self::BUFFER_SIZE
1022
+				: $mlen;
1023
+			$ciphertext = fread($ifp, $blockSize);
1024
+			if (!is_string($ciphertext)) {
1025
+				throw new SodiumException('Could not read input file');
1026
+			}
1027
+			$pBlock = ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
1028
+				$ciphertext,
1029
+				$realNonce,
1030
+				$iter,
1031
+				$subkey
1032
+			);
1033
+			fwrite($ofp, $pBlock, $blockSize);
1034
+			$mlen -= $blockSize;
1035
+			$iter += $incr;
1036
+		}
1037
+		return true;
1038
+	}
1039
+
1040
+	/**
1041
+	 * @param ParagonIE_Sodium_Core_Poly1305_State $state
1042
+	 * @param resource $ifp
1043
+	 * @param string $tag
1044
+	 * @param int $mlen
1045
+	 * @return bool
1046
+	 * @throws SodiumException
1047
+	 * @throws TypeError
1048
+	 */
1049
+	protected static function onetimeauth_verify(
1050
+		ParagonIE_Sodium_Core_Poly1305_State $state,
1051
+		$ifp,
1052
+		$tag = '',
1053
+		$mlen = 0
1054
+	) {
1055
+		/** @var int $pos */
1056
+		$pos = self::ftell($ifp);
1057
+
1058
+		/** @var int $iter */
1059
+		$iter = 1;
1060
+
1061
+		/** @var int $incr */
1062
+		$incr = self::BUFFER_SIZE >> 6;
1063
+
1064
+		while ($mlen > 0) {
1065
+			$blockSize = $mlen > self::BUFFER_SIZE
1066
+				? self::BUFFER_SIZE
1067
+				: $mlen;
1068
+			$ciphertext = fread($ifp, $blockSize);
1069
+			if (!is_string($ciphertext)) {
1070
+				throw new SodiumException('Could not read input file');
1071
+			}
1072
+			$state->update($ciphertext);
1073
+			$mlen -= $blockSize;
1074
+			$iter += $incr;
1075
+		}
1076
+		$res = ParagonIE_Sodium_Core_Util::verify_16($tag, $state->finish());
1077
+
1078
+		fseek($ifp, $pos, SEEK_SET);
1079
+		return $res;
1080
+	}
1081
+
1082
+	/**
1083
+	 * Update a hash context with the contents of a file, without
1084
+	 * loading the entire file into memory.
1085
+	 *
1086
+	 * @param resource|HashContext $hash
1087
+	 * @param resource $fp
1088
+	 * @param int $size
1089
+	 * @return resource|object Resource on PHP < 7.2, HashContext object on PHP >= 7.2
1090
+	 * @throws SodiumException
1091
+	 * @throws TypeError
1092
+	 * @psalm-suppress PossiblyInvalidArgument
1093
+	 *                 PHP 7.2 changes from a resource to an object,
1094
+	 *                 which causes Psalm to complain about an error.
1095
+	 * @psalm-suppress TypeCoercion
1096
+	 *                 Ditto.
1097
+	 */
1098
+	public static function updateHashWithFile($hash, $fp, $size = 0)
1099
+	{
1100
+		/* Type checks: */
1101
+		if (PHP_VERSION_ID < 70200) {
1102
+			if (!is_resource($hash)) {
1103
+				throw new TypeError('Argument 1 must be a resource, ' . gettype($hash) . ' given.');
1104
+			}
1105
+		} else {
1106
+			if (!is_object($hash)) {
1107
+				throw new TypeError('Argument 1 must be an object (PHP 7.2+), ' . gettype($hash) . ' given.');
1108
+			}
1109
+		}
1110
+
1111
+		if (!is_resource($fp)) {
1112
+			throw new TypeError('Argument 2 must be a resource, ' . gettype($fp) . ' given.');
1113
+		}
1114
+		if (!is_int($size)) {
1115
+			throw new TypeError('Argument 3 must be an integer, ' . gettype($size) . ' given.');
1116
+		}
1117
+
1118
+		/** @var int $originalPosition */
1119
+		$originalPosition = self::ftell($fp);
1120
+
1121
+		// Move file pointer to beginning of file
1122
+		fseek($fp, 0, SEEK_SET);
1123
+		for ($i = 0; $i < $size; $i += self::BUFFER_SIZE) {
1124
+			/** @var string|bool $message */
1125
+			$message = fread(
1126
+				$fp,
1127
+				($size - $i) > self::BUFFER_SIZE
1128
+					? $size - $i
1129
+					: self::BUFFER_SIZE
1130
+			);
1131
+			if (!is_string($message)) {
1132
+				throw new SodiumException('Unexpected error reading from file.');
1133
+			}
1134
+			/** @var string $message */
1135
+			/** @psalm-suppress InvalidArgument */
1136
+			self::hash_update($hash, $message);
1137
+		}
1138
+		// Reset file pointer's position
1139
+		fseek($fp, $originalPosition, SEEK_SET);
1140
+		return $hash;
1141
+	}
1142
+
1143
+	/**
1144
+	 * Sign a file (rather than a string). Uses less memory than
1145
+	 * ParagonIE_Sodium_Compat::crypto_sign_detached(), but produces
1146
+	 * the same result. (32-bit)
1147
+	 *
1148
+	 * @param string $filePath  Absolute path to a file on the filesystem
1149
+	 * @param string $secretKey Secret signing key
1150
+	 *
1151
+	 * @return string           Ed25519 signature
1152
+	 * @throws SodiumException
1153
+	 * @throws TypeError
1154
+	 */
1155
+	private static function sign_core32($filePath, $secretKey)
1156
+	{
1157
+		/** @var int|bool $size */
1158
+		$size = filesize($filePath);
1159
+		if (!is_int($size)) {
1160
+			throw new SodiumException('Could not obtain the file size');
1161
+		}
1162
+		/** @var int $size */
1163
+
1164
+		/** @var resource|bool $fp */
1165
+		$fp = fopen($filePath, 'rb');
1166
+		if (!is_resource($fp)) {
1167
+			throw new SodiumException('Could not open input file for reading');
1168
+		}
1169
+		/** @var resource $fp */
1170
+
1171
+		/** @var string $az */
1172
+		$az = hash('sha512', self::substr($secretKey, 0, 32), true);
1173
+
1174
+		$az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
1175
+		$az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);
1176
+
1177
+		$hs = hash_init('sha512');
1178
+		self::hash_update($hs, self::substr($az, 32, 32));
1179
+		/** @var resource $hs */
1180
+		$hs = self::updateHashWithFile($hs, $fp, $size);
1181
+
1182
+		/** @var string $nonceHash */
1183
+		$nonceHash = hash_final($hs, true);
1184
+
1185
+		/** @var string $pk */
1186
+		$pk = self::substr($secretKey, 32, 32);
1187
+
1188
+		/** @var string $nonce */
1189
+		$nonce = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($nonceHash) . self::substr($nonceHash, 32);
1190
+
1191
+		/** @var string $sig */
1192
+		$sig = ParagonIE_Sodium_Core32_Ed25519::ge_p3_tobytes(
1193
+			ParagonIE_Sodium_Core32_Ed25519::ge_scalarmult_base($nonce)
1194
+		);
1195
+
1196
+		$hs = hash_init('sha512');
1197
+		self::hash_update($hs, self::substr($sig, 0, 32));
1198
+		self::hash_update($hs, self::substr($pk, 0, 32));
1199
+		/** @var resource $hs */
1200
+		$hs = self::updateHashWithFile($hs, $fp, $size);
1201
+
1202
+		/** @var string $hramHash */
1203
+		$hramHash = hash_final($hs, true);
1204
+
1205
+		/** @var string $hram */
1206
+		$hram = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($hramHash);
1207
+
1208
+		/** @var string $sigAfter */
1209
+		$sigAfter = ParagonIE_Sodium_Core32_Ed25519::sc_muladd($hram, $az, $nonce);
1210
+
1211
+		/** @var string $sig */
1212
+		$sig = self::substr($sig, 0, 32) . self::substr($sigAfter, 0, 32);
1213
+
1214
+		try {
1215
+			ParagonIE_Sodium_Compat::memzero($az);
1216
+		} catch (SodiumException $ex) {
1217
+			$az = null;
1218
+		}
1219
+		fclose($fp);
1220
+		return $sig;
1221
+	}
1222
+
1223
+	/**
1224
+	 *
1225
+	 * Verify a file (rather than a string). Uses less memory than
1226
+	 * ParagonIE_Sodium_Compat::crypto_sign_verify_detached(), but
1227
+	 * produces the same result. (32-bit)
1228
+	 *
1229
+	 * @param string $sig       Ed25519 signature
1230
+	 * @param string $filePath  Absolute path to a file on the filesystem
1231
+	 * @param string $publicKey Signing public key
1232
+	 *
1233
+	 * @return bool
1234
+	 * @throws SodiumException
1235
+	 * @throws Exception
1236
+	 */
1237
+	public static function verify_core32($sig, $filePath, $publicKey)
1238
+	{
1239
+		/* Security checks */
1240
+		if (ParagonIE_Sodium_Core32_Ed25519::check_S_lt_L(self::substr($sig, 32, 32))) {
1241
+			throw new SodiumException('S < L - Invalid signature');
1242
+		}
1243
+		if (ParagonIE_Sodium_Core32_Ed25519::small_order($sig)) {
1244
+			throw new SodiumException('Signature is on too small of an order');
1245
+		}
1246
+		if ((self::chrToInt($sig[63]) & 224) !== 0) {
1247
+			throw new SodiumException('Invalid signature');
1248
+		}
1249
+		$d = 0;
1250
+		for ($i = 0; $i < 32; ++$i) {
1251
+			$d |= self::chrToInt($publicKey[$i]);
1252
+		}
1253
+		if ($d === 0) {
1254
+			throw new SodiumException('All zero public key');
1255
+		}
1256
+
1257
+		/** @var int|bool $size */
1258
+		$size = filesize($filePath);
1259
+		if (!is_int($size)) {
1260
+			throw new SodiumException('Could not obtain the file size');
1261
+		}
1262
+		/** @var int $size */
1263
+
1264
+		/** @var resource|bool $fp */
1265
+		$fp = fopen($filePath, 'rb');
1266
+		if (!is_resource($fp)) {
1267
+			throw new SodiumException('Could not open input file for reading');
1268
+		}
1269
+		/** @var resource $fp */
1270
+
1271
+		/** @var bool The original value of ParagonIE_Sodium_Compat::$fastMult */
1272
+		$orig = ParagonIE_Sodium_Compat::$fastMult;
1273
+
1274
+		// Set ParagonIE_Sodium_Compat::$fastMult to true to speed up verification.
1275
+		ParagonIE_Sodium_Compat::$fastMult = true;
1276
+
1277
+		/** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A */
1278
+		$A = ParagonIE_Sodium_Core32_Ed25519::ge_frombytes_negate_vartime($publicKey);
1279
+
1280
+		$hs = hash_init('sha512');
1281
+		self::hash_update($hs, self::substr($sig, 0, 32));
1282
+		self::hash_update($hs, self::substr($publicKey, 0, 32));
1283
+		/** @var resource $hs */
1284
+		$hs = self::updateHashWithFile($hs, $fp, $size);
1285
+		/** @var string $hDigest */
1286
+		$hDigest = hash_final($hs, true);
1287
+
1288
+		/** @var string $h */
1289
+		$h = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($hDigest) . self::substr($hDigest, 32);
1290
+
1291
+		/** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $R */
1292
+		$R = ParagonIE_Sodium_Core32_Ed25519::ge_double_scalarmult_vartime(
1293
+			$h,
1294
+			$A,
1295
+			self::substr($sig, 32)
1296
+		);
1297
+
1298
+		/** @var string $rcheck */
1299
+		$rcheck = ParagonIE_Sodium_Core32_Ed25519::ge_tobytes($R);
1300
+
1301
+		// Close the file handle
1302
+		fclose($fp);
1303
+
1304
+		// Reset ParagonIE_Sodium_Compat::$fastMult to what it was before.
1305
+		ParagonIE_Sodium_Compat::$fastMult = $orig;
1306
+		return self::verify_32($rcheck, self::substr($sig, 0, 32));
1307
+	}
1308
+
1309
+	/**
1310
+	 * Encrypt a file (32-bit)
1311
+	 *
1312
+	 * @param resource $ifp
1313
+	 * @param resource $ofp
1314
+	 * @param int $mlen
1315
+	 * @param string $nonce
1316
+	 * @param string $key
1317
+	 * @return bool
1318
+	 * @throws SodiumException
1319
+	 * @throws TypeError
1320
+	 */
1321
+	protected static function secretbox_encrypt_core32($ifp, $ofp, $mlen, $nonce, $key)
1322
+	{
1323
+		$plaintext = fread($ifp, 32);
1324
+		if (!is_string($plaintext)) {
1325
+			throw new SodiumException('Could not read input file');
1326
+		}
1327
+		$first32 = self::ftell($ifp);
1328
+
1329
+		/** @var string $subkey */
1330
+		$subkey = ParagonIE_Sodium_Core32_HSalsa20::hsalsa20($nonce, $key);
1331
+
1332
+		/** @var string $realNonce */
1333
+		$realNonce = ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8);
1334
+
1335
+		/** @var string $block0 */
1336
+		$block0 = str_repeat("\x00", 32);
1337
+
1338
+		/** @var int $mlen - Length of the plaintext message */
1339
+		$mlen0 = $mlen;
1340
+		if ($mlen0 > 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES) {
1341
+			$mlen0 = 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES;
1342
+		}
1343
+		$block0 .= ParagonIE_Sodium_Core32_Util::substr($plaintext, 0, $mlen0);
1344
+
1345
+		/** @var string $block0 */
1346
+		$block0 = ParagonIE_Sodium_Core32_Salsa20::salsa20_xor(
1347
+			$block0,
1348
+			$realNonce,
1349
+			$subkey
1350
+		);
1351
+
1352
+		$state = new ParagonIE_Sodium_Core32_Poly1305_State(
1353
+			ParagonIE_Sodium_Core32_Util::substr(
1354
+				$block0,
1355
+				0,
1356
+				ParagonIE_Sodium_Crypto::onetimeauth_poly1305_KEYBYTES
1357
+			)
1358
+		);
1359
+
1360
+		// Pre-write 16 blank bytes for the Poly1305 tag
1361
+		$start = self::ftell($ofp);
1362
+		fwrite($ofp, str_repeat("\x00", 16));
1363
+
1364
+		/** @var string $c */
1365
+		$cBlock = ParagonIE_Sodium_Core32_Util::substr(
1366
+			$block0,
1367
+			ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES
1368
+		);
1369
+		$state->update($cBlock);
1370
+		fwrite($ofp, $cBlock);
1371
+		$mlen -= 32;
1372
+
1373
+		/** @var int $iter */
1374
+		$iter = 1;
1375
+
1376
+		/** @var int $incr */
1377
+		$incr = self::BUFFER_SIZE >> 6;
1378
+
1379
+		/*
1380 1380
          * Set the cursor to the end of the first half-block. All future bytes will
1381 1381
          * generated from salsa20_xor_ic, starting from 1 (second block).
1382 1382
          */
1383
-        fseek($ifp, $first32, SEEK_SET);
1384
-
1385
-        while ($mlen > 0) {
1386
-            $blockSize = $mlen > self::BUFFER_SIZE
1387
-                ? self::BUFFER_SIZE
1388
-                : $mlen;
1389
-            $plaintext = fread($ifp, $blockSize);
1390
-            if (!is_string($plaintext)) {
1391
-                throw new SodiumException('Could not read input file');
1392
-            }
1393
-            $cBlock = ParagonIE_Sodium_Core32_Salsa20::salsa20_xor_ic(
1394
-                $plaintext,
1395
-                $realNonce,
1396
-                $iter,
1397
-                $subkey
1398
-            );
1399
-            fwrite($ofp, $cBlock, $blockSize);
1400
-            $state->update($cBlock);
1401
-
1402
-            $mlen -= $blockSize;
1403
-            $iter += $incr;
1404
-        }
1405
-        try {
1406
-            ParagonIE_Sodium_Compat::memzero($block0);
1407
-            ParagonIE_Sodium_Compat::memzero($subkey);
1408
-        } catch (SodiumException $ex) {
1409
-            $block0 = null;
1410
-            $subkey = null;
1411
-        }
1412
-        $end = self::ftell($ofp);
1413
-
1414
-        /*
1383
+		fseek($ifp, $first32, SEEK_SET);
1384
+
1385
+		while ($mlen > 0) {
1386
+			$blockSize = $mlen > self::BUFFER_SIZE
1387
+				? self::BUFFER_SIZE
1388
+				: $mlen;
1389
+			$plaintext = fread($ifp, $blockSize);
1390
+			if (!is_string($plaintext)) {
1391
+				throw new SodiumException('Could not read input file');
1392
+			}
1393
+			$cBlock = ParagonIE_Sodium_Core32_Salsa20::salsa20_xor_ic(
1394
+				$plaintext,
1395
+				$realNonce,
1396
+				$iter,
1397
+				$subkey
1398
+			);
1399
+			fwrite($ofp, $cBlock, $blockSize);
1400
+			$state->update($cBlock);
1401
+
1402
+			$mlen -= $blockSize;
1403
+			$iter += $incr;
1404
+		}
1405
+		try {
1406
+			ParagonIE_Sodium_Compat::memzero($block0);
1407
+			ParagonIE_Sodium_Compat::memzero($subkey);
1408
+		} catch (SodiumException $ex) {
1409
+			$block0 = null;
1410
+			$subkey = null;
1411
+		}
1412
+		$end = self::ftell($ofp);
1413
+
1414
+		/*
1415 1415
          * Write the Poly1305 authentication tag that provides integrity
1416 1416
          * over the ciphertext (encrypt-then-MAC)
1417 1417
          */
1418
-        fseek($ofp, $start, SEEK_SET);
1419
-        fwrite($ofp, $state->finish(), ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_MACBYTES);
1420
-        fseek($ofp, $end, SEEK_SET);
1421
-        unset($state);
1422
-
1423
-        return true;
1424
-    }
1425
-
1426
-    /**
1427
-     * Decrypt a file (32-bit)
1428
-     *
1429
-     * @param resource $ifp
1430
-     * @param resource $ofp
1431
-     * @param int $mlen
1432
-     * @param string $nonce
1433
-     * @param string $key
1434
-     * @return bool
1435
-     * @throws SodiumException
1436
-     * @throws TypeError
1437
-     */
1438
-    protected static function secretbox_decrypt_core32($ifp, $ofp, $mlen, $nonce, $key)
1439
-    {
1440
-        $tag = fread($ifp, 16);
1441
-        if (!is_string($tag)) {
1442
-            throw new SodiumException('Could not read input file');
1443
-        }
1444
-
1445
-        /** @var string $subkey */
1446
-        $subkey = ParagonIE_Sodium_Core32_HSalsa20::hsalsa20($nonce, $key);
1447
-
1448
-        /** @var string $realNonce */
1449
-        $realNonce = ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8);
1450
-
1451
-        /** @var string $block0 */
1452
-        $block0 = ParagonIE_Sodium_Core32_Salsa20::salsa20(
1453
-            64,
1454
-            ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8),
1455
-            $subkey
1456
-        );
1457
-
1458
-        /* Verify the Poly1305 MAC -before- attempting to decrypt! */
1459
-        $state = new ParagonIE_Sodium_Core32_Poly1305_State(self::substr($block0, 0, 32));
1460
-        if (!self::onetimeauth_verify_core32($state, $ifp, $tag, $mlen)) {
1461
-            throw new SodiumException('Invalid MAC');
1462
-        }
1463
-
1464
-        /*
1418
+		fseek($ofp, $start, SEEK_SET);
1419
+		fwrite($ofp, $state->finish(), ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_MACBYTES);
1420
+		fseek($ofp, $end, SEEK_SET);
1421
+		unset($state);
1422
+
1423
+		return true;
1424
+	}
1425
+
1426
+	/**
1427
+	 * Decrypt a file (32-bit)
1428
+	 *
1429
+	 * @param resource $ifp
1430
+	 * @param resource $ofp
1431
+	 * @param int $mlen
1432
+	 * @param string $nonce
1433
+	 * @param string $key
1434
+	 * @return bool
1435
+	 * @throws SodiumException
1436
+	 * @throws TypeError
1437
+	 */
1438
+	protected static function secretbox_decrypt_core32($ifp, $ofp, $mlen, $nonce, $key)
1439
+	{
1440
+		$tag = fread($ifp, 16);
1441
+		if (!is_string($tag)) {
1442
+			throw new SodiumException('Could not read input file');
1443
+		}
1444
+
1445
+		/** @var string $subkey */
1446
+		$subkey = ParagonIE_Sodium_Core32_HSalsa20::hsalsa20($nonce, $key);
1447
+
1448
+		/** @var string $realNonce */
1449
+		$realNonce = ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8);
1450
+
1451
+		/** @var string $block0 */
1452
+		$block0 = ParagonIE_Sodium_Core32_Salsa20::salsa20(
1453
+			64,
1454
+			ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8),
1455
+			$subkey
1456
+		);
1457
+
1458
+		/* Verify the Poly1305 MAC -before- attempting to decrypt! */
1459
+		$state = new ParagonIE_Sodium_Core32_Poly1305_State(self::substr($block0, 0, 32));
1460
+		if (!self::onetimeauth_verify_core32($state, $ifp, $tag, $mlen)) {
1461
+			throw new SodiumException('Invalid MAC');
1462
+		}
1463
+
1464
+		/*
1465 1465
          * Set the cursor to the end of the first half-block. All future bytes will
1466 1466
          * generated from salsa20_xor_ic, starting from 1 (second block).
1467 1467
          */
1468
-        $first32 = fread($ifp, 32);
1469
-        if (!is_string($first32)) {
1470
-            throw new SodiumException('Could not read input file');
1471
-        }
1472
-        $first32len = self::strlen($first32);
1473
-        fwrite(
1474
-            $ofp,
1475
-            self::xorStrings(
1476
-                self::substr($block0, 32, $first32len),
1477
-                self::substr($first32, 0, $first32len)
1478
-            )
1479
-        );
1480
-        $mlen -= 32;
1481
-
1482
-        /** @var int $iter */
1483
-        $iter = 1;
1484
-
1485
-        /** @var int $incr */
1486
-        $incr = self::BUFFER_SIZE >> 6;
1487
-
1488
-        /* Decrypts ciphertext, writes to output file. */
1489
-        while ($mlen > 0) {
1490
-            $blockSize = $mlen > self::BUFFER_SIZE
1491
-                ? self::BUFFER_SIZE
1492
-                : $mlen;
1493
-            $ciphertext = fread($ifp, $blockSize);
1494
-            if (!is_string($ciphertext)) {
1495
-                throw new SodiumException('Could not read input file');
1496
-            }
1497
-            $pBlock = ParagonIE_Sodium_Core32_Salsa20::salsa20_xor_ic(
1498
-                $ciphertext,
1499
-                $realNonce,
1500
-                $iter,
1501
-                $subkey
1502
-            );
1503
-            fwrite($ofp, $pBlock, $blockSize);
1504
-            $mlen -= $blockSize;
1505
-            $iter += $incr;
1506
-        }
1507
-        return true;
1508
-    }
1509
-
1510
-    /**
1511
-     * One-time message authentication for 32-bit systems
1512
-     *
1513
-     * @param ParagonIE_Sodium_Core32_Poly1305_State $state
1514
-     * @param resource $ifp
1515
-     * @param string $tag
1516
-     * @param int $mlen
1517
-     * @return bool
1518
-     * @throws SodiumException
1519
-     * @throws TypeError
1520
-     */
1521
-    protected static function onetimeauth_verify_core32(
1522
-        ParagonIE_Sodium_Core32_Poly1305_State $state,
1523
-        $ifp,
1524
-        $tag = '',
1525
-        $mlen = 0
1526
-    ) {
1527
-        /** @var int $pos */
1528
-        $pos = self::ftell($ifp);
1529
-
1530
-        while ($mlen > 0) {
1531
-            $blockSize = $mlen > self::BUFFER_SIZE
1532
-                ? self::BUFFER_SIZE
1533
-                : $mlen;
1534
-            $ciphertext = fread($ifp, $blockSize);
1535
-            if (!is_string($ciphertext)) {
1536
-                throw new SodiumException('Could not read input file');
1537
-            }
1538
-            $state->update($ciphertext);
1539
-            $mlen -= $blockSize;
1540
-        }
1541
-        $res = ParagonIE_Sodium_Core32_Util::verify_16($tag, $state->finish());
1542
-
1543
-        fseek($ifp, $pos, SEEK_SET);
1544
-        return $res;
1545
-    }
1546
-
1547
-    /**
1548
-     * @param resource $resource
1549
-     * @return int
1550
-     * @throws SodiumException
1551
-     */
1552
-    private static function ftell($resource)
1553
-    {
1554
-        $return = ftell($resource);
1555
-        if (!is_int($return)) {
1556
-            throw new SodiumException('ftell() returned false');
1557
-        }
1558
-        return (int) $return;
1559
-    }
1468
+		$first32 = fread($ifp, 32);
1469
+		if (!is_string($first32)) {
1470
+			throw new SodiumException('Could not read input file');
1471
+		}
1472
+		$first32len = self::strlen($first32);
1473
+		fwrite(
1474
+			$ofp,
1475
+			self::xorStrings(
1476
+				self::substr($block0, 32, $first32len),
1477
+				self::substr($first32, 0, $first32len)
1478
+			)
1479
+		);
1480
+		$mlen -= 32;
1481
+
1482
+		/** @var int $iter */
1483
+		$iter = 1;
1484
+
1485
+		/** @var int $incr */
1486
+		$incr = self::BUFFER_SIZE >> 6;
1487
+
1488
+		/* Decrypts ciphertext, writes to output file. */
1489
+		while ($mlen > 0) {
1490
+			$blockSize = $mlen > self::BUFFER_SIZE
1491
+				? self::BUFFER_SIZE
1492
+				: $mlen;
1493
+			$ciphertext = fread($ifp, $blockSize);
1494
+			if (!is_string($ciphertext)) {
1495
+				throw new SodiumException('Could not read input file');
1496
+			}
1497
+			$pBlock = ParagonIE_Sodium_Core32_Salsa20::salsa20_xor_ic(
1498
+				$ciphertext,
1499
+				$realNonce,
1500
+				$iter,
1501
+				$subkey
1502
+			);
1503
+			fwrite($ofp, $pBlock, $blockSize);
1504
+			$mlen -= $blockSize;
1505
+			$iter += $incr;
1506
+		}
1507
+		return true;
1508
+	}
1509
+
1510
+	/**
1511
+	 * One-time message authentication for 32-bit systems
1512
+	 *
1513
+	 * @param ParagonIE_Sodium_Core32_Poly1305_State $state
1514
+	 * @param resource $ifp
1515
+	 * @param string $tag
1516
+	 * @param int $mlen
1517
+	 * @return bool
1518
+	 * @throws SodiumException
1519
+	 * @throws TypeError
1520
+	 */
1521
+	protected static function onetimeauth_verify_core32(
1522
+		ParagonIE_Sodium_Core32_Poly1305_State $state,
1523
+		$ifp,
1524
+		$tag = '',
1525
+		$mlen = 0
1526
+	) {
1527
+		/** @var int $pos */
1528
+		$pos = self::ftell($ifp);
1529
+
1530
+		while ($mlen > 0) {
1531
+			$blockSize = $mlen > self::BUFFER_SIZE
1532
+				? self::BUFFER_SIZE
1533
+				: $mlen;
1534
+			$ciphertext = fread($ifp, $blockSize);
1535
+			if (!is_string($ciphertext)) {
1536
+				throw new SodiumException('Could not read input file');
1537
+			}
1538
+			$state->update($ciphertext);
1539
+			$mlen -= $blockSize;
1540
+		}
1541
+		$res = ParagonIE_Sodium_Core32_Util::verify_16($tag, $state->finish());
1542
+
1543
+		fseek($ifp, $pos, SEEK_SET);
1544
+		return $res;
1545
+	}
1546
+
1547
+	/**
1548
+	 * @param resource $resource
1549
+	 * @return int
1550
+	 * @throws SodiumException
1551
+	 */
1552
+	private static function ftell($resource)
1553
+	{
1554
+		$return = ftell($resource);
1555
+		if (!is_int($return)) {
1556
+			throw new SodiumException('ftell() returned false');
1557
+		}
1558
+		return (int) $return;
1559
+	}
1560 1560
 }
Please login to merge, or discard this patch.
Spacing   +513 added lines, -513 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_File', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_File', false ) ) {
4 4
     return;
5 5
 }
6 6
 /**
@@ -25,52 +25,52 @@  discard block
 block discarded – undo
25 25
      * @throws SodiumException
26 26
      * @throws TypeError
27 27
      */
28
-    public static function box($inputFile, $outputFile, $nonce, $keyPair)
28
+    public static function box( $inputFile, $outputFile, $nonce, $keyPair )
29 29
     {
30 30
         /* Type checks: */
31
-        if (!is_string($inputFile)) {
32
-            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
31
+        if ( ! is_string( $inputFile ) ) {
32
+            throw new TypeError( 'Argument 1 must be a string, ' . gettype( $inputFile ) . ' given.' );
33 33
         }
34
-        if (!is_string($outputFile)) {
35
-            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
34
+        if ( ! is_string( $outputFile ) ) {
35
+            throw new TypeError( 'Argument 2 must be a string, ' . gettype( $outputFile ) . ' given.' );
36 36
         }
37
-        if (!is_string($nonce)) {
38
-            throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
37
+        if ( ! is_string( $nonce ) ) {
38
+            throw new TypeError( 'Argument 3 must be a string, ' . gettype( $nonce ) . ' given.' );
39 39
         }
40 40
 
41 41
         /* Input validation: */
42
-        if (!is_string($keyPair)) {
43
-            throw new TypeError('Argument 4 must be a string, ' . gettype($keyPair) . ' given.');
42
+        if ( ! is_string( $keyPair ) ) {
43
+            throw new TypeError( 'Argument 4 must be a string, ' . gettype( $keyPair ) . ' given.' );
44 44
         }
45
-        if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_NONCEBYTES) {
46
-            throw new TypeError('Argument 3 must be CRYPTO_BOX_NONCEBYTES bytes');
45
+        if ( self::strlen( $nonce ) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_NONCEBYTES ) {
46
+            throw new TypeError( 'Argument 3 must be CRYPTO_BOX_NONCEBYTES bytes' );
47 47
         }
48
-        if (self::strlen($keyPair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
49
-            throw new TypeError('Argument 4 must be CRYPTO_BOX_KEYPAIRBYTES bytes');
48
+        if ( self::strlen( $keyPair ) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES ) {
49
+            throw new TypeError( 'Argument 4 must be CRYPTO_BOX_KEYPAIRBYTES bytes' );
50 50
         }
51 51
 
52 52
         /** @var int $size */
53
-        $size = filesize($inputFile);
54
-        if (!is_int($size)) {
55
-            throw new SodiumException('Could not obtain the file size');
53
+        $size = filesize( $inputFile );
54
+        if ( ! is_int( $size ) ) {
55
+            throw new SodiumException( 'Could not obtain the file size' );
56 56
         }
57 57
 
58 58
         /** @var resource $ifp */
59
-        $ifp = fopen($inputFile, 'rb');
60
-        if (!is_resource($ifp)) {
61
-            throw new SodiumException('Could not open input file for reading');
59
+        $ifp = fopen( $inputFile, 'rb' );
60
+        if ( ! is_resource( $ifp ) ) {
61
+            throw new SodiumException( 'Could not open input file for reading' );
62 62
         }
63 63
 
64 64
         /** @var resource $ofp */
65
-        $ofp = fopen($outputFile, 'wb');
66
-        if (!is_resource($ofp)) {
67
-            fclose($ifp);
68
-            throw new SodiumException('Could not open output file for writing');
65
+        $ofp = fopen( $outputFile, 'wb' );
66
+        if ( ! is_resource( $ofp ) ) {
67
+            fclose( $ifp );
68
+            throw new SodiumException( 'Could not open output file for writing' );
69 69
         }
70 70
 
71
-        $res = self::box_encrypt($ifp, $ofp, $size, $nonce, $keyPair);
72
-        fclose($ifp);
73
-        fclose($ofp);
71
+        $res = self::box_encrypt( $ifp, $ofp, $size, $nonce, $keyPair );
72
+        fclose( $ifp );
73
+        fclose( $ofp );
74 74
         return $res;
75 75
     }
76 76
 
@@ -91,58 +91,58 @@  discard block
 block discarded – undo
91 91
      * @throws SodiumException
92 92
      * @throws TypeError
93 93
      */
94
-    public static function box_open($inputFile, $outputFile, $nonce, $keypair)
94
+    public static function box_open( $inputFile, $outputFile, $nonce, $keypair )
95 95
     {
96 96
         /* Type checks: */
97
-        if (!is_string($inputFile)) {
98
-            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
97
+        if ( ! is_string( $inputFile ) ) {
98
+            throw new TypeError( 'Argument 1 must be a string, ' . gettype( $inputFile ) . ' given.' );
99 99
         }
100
-        if (!is_string($outputFile)) {
101
-            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
100
+        if ( ! is_string( $outputFile ) ) {
101
+            throw new TypeError( 'Argument 2 must be a string, ' . gettype( $outputFile ) . ' given.' );
102 102
         }
103
-        if (!is_string($nonce)) {
104
-            throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
103
+        if ( ! is_string( $nonce ) ) {
104
+            throw new TypeError( 'Argument 3 must be a string, ' . gettype( $nonce ) . ' given.' );
105 105
         }
106
-        if (!is_string($keypair)) {
107
-            throw new TypeError('Argument 4 must be a string, ' . gettype($keypair) . ' given.');
106
+        if ( ! is_string( $keypair ) ) {
107
+            throw new TypeError( 'Argument 4 must be a string, ' . gettype( $keypair ) . ' given.' );
108 108
         }
109 109
 
110 110
         /* Input validation: */
111
-        if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_NONCEBYTES) {
112
-            throw new TypeError('Argument 4 must be CRYPTO_BOX_NONCEBYTES bytes');
111
+        if ( self::strlen( $nonce ) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_NONCEBYTES ) {
112
+            throw new TypeError( 'Argument 4 must be CRYPTO_BOX_NONCEBYTES bytes' );
113 113
         }
114
-        if (self::strlen($keypair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
115
-            throw new TypeError('Argument 4 must be CRYPTO_BOX_KEYPAIRBYTES bytes');
114
+        if ( self::strlen( $keypair ) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES ) {
115
+            throw new TypeError( 'Argument 4 must be CRYPTO_BOX_KEYPAIRBYTES bytes' );
116 116
         }
117 117
 
118 118
         /** @var int $size */
119
-        $size = filesize($inputFile);
120
-        if (!is_int($size)) {
121
-            throw new SodiumException('Could not obtain the file size');
119
+        $size = filesize( $inputFile );
120
+        if ( ! is_int( $size ) ) {
121
+            throw new SodiumException( 'Could not obtain the file size' );
122 122
         }
123 123
 
124 124
         /** @var resource $ifp */
125
-        $ifp = fopen($inputFile, 'rb');
126
-        if (!is_resource($ifp)) {
127
-            throw new SodiumException('Could not open input file for reading');
125
+        $ifp = fopen( $inputFile, 'rb' );
126
+        if ( ! is_resource( $ifp ) ) {
127
+            throw new SodiumException( 'Could not open input file for reading' );
128 128
         }
129 129
 
130 130
         /** @var resource $ofp */
131
-        $ofp = fopen($outputFile, 'wb');
132
-        if (!is_resource($ofp)) {
133
-            fclose($ifp);
134
-            throw new SodiumException('Could not open output file for writing');
131
+        $ofp = fopen( $outputFile, 'wb' );
132
+        if ( ! is_resource( $ofp ) ) {
133
+            fclose( $ifp );
134
+            throw new SodiumException( 'Could not open output file for writing' );
135 135
         }
136 136
 
137
-        $res = self::box_decrypt($ifp, $ofp, $size, $nonce, $keypair);
138
-        fclose($ifp);
139
-        fclose($ofp);
137
+        $res = self::box_decrypt( $ifp, $ofp, $size, $nonce, $keypair );
138
+        fclose( $ifp );
139
+        fclose( $ofp );
140 140
         try {
141
-            ParagonIE_Sodium_Compat::memzero($nonce);
142
-            ParagonIE_Sodium_Compat::memzero($ephKeypair);
143
-        } catch (SodiumException $ex) {
144
-            if (isset($ephKeypair)) {
145
-                unset($ephKeypair);
141
+            ParagonIE_Sodium_Compat::memzero( $nonce );
142
+            ParagonIE_Sodium_Compat::memzero( $ephKeypair );
143
+        } catch ( SodiumException $ex ) {
144
+            if ( isset( $ephKeypair ) ) {
145
+                unset( $ephKeypair );
146 146
             }
147 147
         }
148 148
         return $res;
@@ -161,41 +161,41 @@  discard block
 block discarded – undo
161 161
      * @throws SodiumException
162 162
      * @throws TypeError
163 163
      */
164
-    public static function box_seal($inputFile, $outputFile, $publicKey)
164
+    public static function box_seal( $inputFile, $outputFile, $publicKey )
165 165
     {
166 166
         /* Type checks: */
167
-        if (!is_string($inputFile)) {
168
-            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
167
+        if ( ! is_string( $inputFile ) ) {
168
+            throw new TypeError( 'Argument 1 must be a string, ' . gettype( $inputFile ) . ' given.' );
169 169
         }
170
-        if (!is_string($outputFile)) {
171
-            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
170
+        if ( ! is_string( $outputFile ) ) {
171
+            throw new TypeError( 'Argument 2 must be a string, ' . gettype( $outputFile ) . ' given.' );
172 172
         }
173
-        if (!is_string($publicKey)) {
174
-            throw new TypeError('Argument 3 must be a string, ' . gettype($publicKey) . ' given.');
173
+        if ( ! is_string( $publicKey ) ) {
174
+            throw new TypeError( 'Argument 3 must be a string, ' . gettype( $publicKey ) . ' given.' );
175 175
         }
176 176
 
177 177
         /* Input validation: */
178
-        if (self::strlen($publicKey) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES) {
179
-            throw new TypeError('Argument 3 must be CRYPTO_BOX_PUBLICKEYBYTES bytes');
178
+        if ( self::strlen( $publicKey ) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES ) {
179
+            throw new TypeError( 'Argument 3 must be CRYPTO_BOX_PUBLICKEYBYTES bytes' );
180 180
         }
181 181
 
182 182
         /** @var int $size */
183
-        $size = filesize($inputFile);
184
-        if (!is_int($size)) {
185
-            throw new SodiumException('Could not obtain the file size');
183
+        $size = filesize( $inputFile );
184
+        if ( ! is_int( $size ) ) {
185
+            throw new SodiumException( 'Could not obtain the file size' );
186 186
         }
187 187
 
188 188
         /** @var resource $ifp */
189
-        $ifp = fopen($inputFile, 'rb');
190
-        if (!is_resource($ifp)) {
191
-            throw new SodiumException('Could not open input file for reading');
189
+        $ifp = fopen( $inputFile, 'rb' );
190
+        if ( ! is_resource( $ifp ) ) {
191
+            throw new SodiumException( 'Could not open input file for reading' );
192 192
         }
193 193
 
194 194
         /** @var resource $ofp */
195
-        $ofp = fopen($outputFile, 'wb');
196
-        if (!is_resource($ofp)) {
197
-            fclose($ifp);
198
-            throw new SodiumException('Could not open output file for writing');
195
+        $ofp = fopen( $outputFile, 'wb' );
196
+        if ( ! is_resource( $ofp ) ) {
197
+            fclose( $ifp );
198
+            throw new SodiumException( 'Could not open output file for writing' );
199 199
         }
200 200
 
201 201
         /** @var string $ephKeypair */
@@ -203,12 +203,12 @@  discard block
 block discarded – undo
203 203
 
204 204
         /** @var string $msgKeypair */
205 205
         $msgKeypair = ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey(
206
-            ParagonIE_Sodium_Compat::crypto_box_secretkey($ephKeypair),
206
+            ParagonIE_Sodium_Compat::crypto_box_secretkey( $ephKeypair ),
207 207
             $publicKey
208 208
         );
209 209
 
210 210
         /** @var string $ephemeralPK */
211
-        $ephemeralPK = ParagonIE_Sodium_Compat::crypto_box_publickey($ephKeypair);
211
+        $ephemeralPK = ParagonIE_Sodium_Compat::crypto_box_publickey( $ephKeypair );
212 212
 
213 213
         /** @var string $nonce */
214 214
         $nonce = ParagonIE_Sodium_Compat::crypto_generichash(
@@ -223,28 +223,28 @@  discard block
 block discarded – undo
223 223
             $ephemeralPK,
224 224
             ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES
225 225
         );
226
-        if (!is_int($firstWrite)) {
227
-            fclose($ifp);
228
-            fclose($ofp);
229
-            ParagonIE_Sodium_Compat::memzero($ephKeypair);
230
-            throw new SodiumException('Could not write to output file');
231
-        }
232
-        if ($firstWrite !== ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES) {
233
-            ParagonIE_Sodium_Compat::memzero($ephKeypair);
234
-            fclose($ifp);
235
-            fclose($ofp);
236
-            throw new SodiumException('Error writing public key to output file');
237
-        }
238
-
239
-        $res = self::box_encrypt($ifp, $ofp, $size, $nonce, $msgKeypair);
240
-        fclose($ifp);
241
-        fclose($ofp);
226
+        if ( ! is_int( $firstWrite ) ) {
227
+            fclose( $ifp );
228
+            fclose( $ofp );
229
+            ParagonIE_Sodium_Compat::memzero( $ephKeypair );
230
+            throw new SodiumException( 'Could not write to output file' );
231
+        }
232
+        if ( $firstWrite !== ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES ) {
233
+            ParagonIE_Sodium_Compat::memzero( $ephKeypair );
234
+            fclose( $ifp );
235
+            fclose( $ofp );
236
+            throw new SodiumException( 'Error writing public key to output file' );
237
+        }
238
+
239
+        $res = self::box_encrypt( $ifp, $ofp, $size, $nonce, $msgKeypair );
240
+        fclose( $ifp );
241
+        fclose( $ofp );
242 242
         try {
243
-            ParagonIE_Sodium_Compat::memzero($nonce);
244
-            ParagonIE_Sodium_Compat::memzero($ephKeypair);
245
-        } catch (SodiumException $ex) {
243
+            ParagonIE_Sodium_Compat::memzero( $nonce );
244
+            ParagonIE_Sodium_Compat::memzero( $ephKeypair );
245
+        } catch ( SodiumException $ex ) {
246 246
             /** @psalm-suppress PossiblyUndefinedVariable */
247
-            unset($ephKeypair);
247
+            unset( $ephKeypair );
248 248
         }
249 249
         return $res;
250 250
     }
@@ -265,53 +265,53 @@  discard block
 block discarded – undo
265 265
      * @throws SodiumException
266 266
      * @throws TypeError
267 267
      */
268
-    public static function box_seal_open($inputFile, $outputFile, $ecdhKeypair)
268
+    public static function box_seal_open( $inputFile, $outputFile, $ecdhKeypair )
269 269
     {
270 270
         /* Type checks: */
271
-        if (!is_string($inputFile)) {
272
-            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
271
+        if ( ! is_string( $inputFile ) ) {
272
+            throw new TypeError( 'Argument 1 must be a string, ' . gettype( $inputFile ) . ' given.' );
273 273
         }
274
-        if (!is_string($outputFile)) {
275
-            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
274
+        if ( ! is_string( $outputFile ) ) {
275
+            throw new TypeError( 'Argument 2 must be a string, ' . gettype( $outputFile ) . ' given.' );
276 276
         }
277
-        if (!is_string($ecdhKeypair)) {
278
-            throw new TypeError('Argument 3 must be a string, ' . gettype($ecdhKeypair) . ' given.');
277
+        if ( ! is_string( $ecdhKeypair ) ) {
278
+            throw new TypeError( 'Argument 3 must be a string, ' . gettype( $ecdhKeypair ) . ' given.' );
279 279
         }
280 280
 
281 281
         /* Input validation: */
282
-        if (self::strlen($ecdhKeypair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
283
-            throw new TypeError('Argument 3 must be CRYPTO_BOX_KEYPAIRBYTES bytes');
282
+        if ( self::strlen( $ecdhKeypair ) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES ) {
283
+            throw new TypeError( 'Argument 3 must be CRYPTO_BOX_KEYPAIRBYTES bytes' );
284 284
         }
285 285
 
286
-        $publicKey = ParagonIE_Sodium_Compat::crypto_box_publickey($ecdhKeypair);
286
+        $publicKey = ParagonIE_Sodium_Compat::crypto_box_publickey( $ecdhKeypair );
287 287
 
288 288
         /** @var int $size */
289
-        $size = filesize($inputFile);
290
-        if (!is_int($size)) {
291
-            throw new SodiumException('Could not obtain the file size');
289
+        $size = filesize( $inputFile );
290
+        if ( ! is_int( $size ) ) {
291
+            throw new SodiumException( 'Could not obtain the file size' );
292 292
         }
293 293
 
294 294
         /** @var resource $ifp */
295
-        $ifp = fopen($inputFile, 'rb');
296
-        if (!is_resource($ifp)) {
297
-            throw new SodiumException('Could not open input file for reading');
295
+        $ifp = fopen( $inputFile, 'rb' );
296
+        if ( ! is_resource( $ifp ) ) {
297
+            throw new SodiumException( 'Could not open input file for reading' );
298 298
         }
299 299
 
300 300
         /** @var resource $ofp */
301
-        $ofp = fopen($outputFile, 'wb');
302
-        if (!is_resource($ofp)) {
303
-            fclose($ifp);
304
-            throw new SodiumException('Could not open output file for writing');
301
+        $ofp = fopen( $outputFile, 'wb' );
302
+        if ( ! is_resource( $ofp ) ) {
303
+            fclose( $ifp );
304
+            throw new SodiumException( 'Could not open output file for writing' );
305 305
         }
306 306
 
307
-        $ephemeralPK = fread($ifp, ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES);
308
-        if (!is_string($ephemeralPK)) {
309
-            throw new SodiumException('Could not read input file');
307
+        $ephemeralPK = fread( $ifp, ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES );
308
+        if ( ! is_string( $ephemeralPK ) ) {
309
+            throw new SodiumException( 'Could not read input file' );
310 310
         }
311
-        if (self::strlen($ephemeralPK) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES) {
312
-            fclose($ifp);
313
-            fclose($ofp);
314
-            throw new SodiumException('Could not read public key from sealed file');
311
+        if ( self::strlen( $ephemeralPK ) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES ) {
312
+            fclose( $ifp );
313
+            fclose( $ofp );
314
+            throw new SodiumException( 'Could not read public key from sealed file' );
315 315
         }
316 316
 
317 317
         $nonce = ParagonIE_Sodium_Compat::crypto_generichash(
@@ -320,19 +320,19 @@  discard block
 block discarded – undo
320 320
             24
321 321
         );
322 322
         $msgKeypair = ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey(
323
-            ParagonIE_Sodium_Compat::crypto_box_secretkey($ecdhKeypair),
323
+            ParagonIE_Sodium_Compat::crypto_box_secretkey( $ecdhKeypair ),
324 324
             $ephemeralPK
325 325
         );
326 326
 
327
-        $res = self::box_decrypt($ifp, $ofp, $size, $nonce, $msgKeypair);
328
-        fclose($ifp);
329
-        fclose($ofp);
327
+        $res = self::box_decrypt( $ifp, $ofp, $size, $nonce, $msgKeypair );
328
+        fclose( $ifp );
329
+        fclose( $ofp );
330 330
         try {
331
-            ParagonIE_Sodium_Compat::memzero($nonce);
332
-            ParagonIE_Sodium_Compat::memzero($ephKeypair);
333
-        } catch (SodiumException $ex) {
334
-            if (isset($ephKeypair)) {
335
-                unset($ephKeypair);
331
+            ParagonIE_Sodium_Compat::memzero( $nonce );
332
+            ParagonIE_Sodium_Compat::memzero( $ephKeypair );
333
+        } catch ( SodiumException $ex ) {
334
+            if ( isset( $ephKeypair ) ) {
335
+                unset( $ephKeypair );
336 336
             }
337 337
         }
338 338
         return $res;
@@ -350,68 +350,68 @@  discard block
 block discarded – undo
350 350
      * @throws TypeError
351 351
      * @psalm-suppress FailedTypeResolution
352 352
      */
353
-    public static function generichash($filePath, $key = '', $outputLength = 32)
353
+    public static function generichash( $filePath, $key = '', $outputLength = 32 )
354 354
     {
355 355
         /* Type checks: */
356
-        if (!is_string($filePath)) {
357
-            throw new TypeError('Argument 1 must be a string, ' . gettype($filePath) . ' given.');
356
+        if ( ! is_string( $filePath ) ) {
357
+            throw new TypeError( 'Argument 1 must be a string, ' . gettype( $filePath ) . ' given.' );
358 358
         }
359
-        if (!is_string($key)) {
360
-            if (is_null($key)) {
359
+        if ( ! is_string( $key ) ) {
360
+            if ( is_null( $key ) ) {
361 361
                 $key = '';
362 362
             } else {
363
-                throw new TypeError('Argument 2 must be a string, ' . gettype($key) . ' given.');
363
+                throw new TypeError( 'Argument 2 must be a string, ' . gettype( $key ) . ' given.' );
364 364
             }
365 365
         }
366
-        if (!is_int($outputLength)) {
367
-            if (!is_numeric($outputLength)) {
368
-                throw new TypeError('Argument 3 must be an integer, ' . gettype($outputLength) . ' given.');
366
+        if ( ! is_int( $outputLength ) ) {
367
+            if ( ! is_numeric( $outputLength ) ) {
368
+                throw new TypeError( 'Argument 3 must be an integer, ' . gettype( $outputLength ) . ' given.' );
369 369
             }
370
-            $outputLength = (int) $outputLength;
370
+            $outputLength = (int)$outputLength;
371 371
         }
372 372
 
373 373
         /* Input validation: */
374
-        if (!empty($key)) {
375
-            if (self::strlen($key) < ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_KEYBYTES_MIN) {
376
-                throw new TypeError('Argument 2 must be at least CRYPTO_GENERICHASH_KEYBYTES_MIN bytes');
374
+        if ( ! empty( $key ) ) {
375
+            if ( self::strlen( $key ) < ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_KEYBYTES_MIN ) {
376
+                throw new TypeError( 'Argument 2 must be at least CRYPTO_GENERICHASH_KEYBYTES_MIN bytes' );
377 377
             }
378
-            if (self::strlen($key) > ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_KEYBYTES_MAX) {
379
-                throw new TypeError('Argument 2 must be at most CRYPTO_GENERICHASH_KEYBYTES_MAX bytes');
378
+            if ( self::strlen( $key ) > ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_KEYBYTES_MAX ) {
379
+                throw new TypeError( 'Argument 2 must be at most CRYPTO_GENERICHASH_KEYBYTES_MAX bytes' );
380 380
             }
381 381
         }
382
-        if ($outputLength < ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_BYTES_MIN) {
383
-            throw new SodiumException('Argument 3 must be at least CRYPTO_GENERICHASH_BYTES_MIN');
382
+        if ( $outputLength < ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_BYTES_MIN ) {
383
+            throw new SodiumException( 'Argument 3 must be at least CRYPTO_GENERICHASH_BYTES_MIN' );
384 384
         }
385
-        if ($outputLength > ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_BYTES_MAX) {
386
-            throw new SodiumException('Argument 3 must be at least CRYPTO_GENERICHASH_BYTES_MAX');
385
+        if ( $outputLength > ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_BYTES_MAX ) {
386
+            throw new SodiumException( 'Argument 3 must be at least CRYPTO_GENERICHASH_BYTES_MAX' );
387 387
         }
388 388
 
389 389
         /** @var int $size */
390
-        $size = filesize($filePath);
391
-        if (!is_int($size)) {
392
-            throw new SodiumException('Could not obtain the file size');
390
+        $size = filesize( $filePath );
391
+        if ( ! is_int( $size ) ) {
392
+            throw new SodiumException( 'Could not obtain the file size' );
393 393
         }
394 394
 
395 395
         /** @var resource $fp */
396
-        $fp = fopen($filePath, 'rb');
397
-        if (!is_resource($fp)) {
398
-            throw new SodiumException('Could not open input file for reading');
396
+        $fp = fopen( $filePath, 'rb' );
397
+        if ( ! is_resource( $fp ) ) {
398
+            throw new SodiumException( 'Could not open input file for reading' );
399 399
         }
400
-        $ctx = ParagonIE_Sodium_Compat::crypto_generichash_init($key, $outputLength);
401
-        while ($size > 0) {
400
+        $ctx = ParagonIE_Sodium_Compat::crypto_generichash_init( $key, $outputLength );
401
+        while ( $size > 0 ) {
402 402
             $blockSize = $size > 64
403 403
                 ? 64
404 404
                 : $size;
405
-            $read = fread($fp, $blockSize);
406
-            if (!is_string($read)) {
407
-                throw new SodiumException('Could not read input file');
405
+            $read = fread( $fp, $blockSize );
406
+            if ( ! is_string( $read ) ) {
407
+                throw new SodiumException( 'Could not read input file' );
408 408
             }
409
-            ParagonIE_Sodium_Compat::crypto_generichash_update($ctx, $read);
409
+            ParagonIE_Sodium_Compat::crypto_generichash_update( $ctx, $read );
410 410
             $size -= $blockSize;
411 411
         }
412 412
 
413
-        fclose($fp);
414
-        return ParagonIE_Sodium_Compat::crypto_generichash_final($ctx, $outputLength);
413
+        fclose( $fp );
414
+        return ParagonIE_Sodium_Compat::crypto_generichash_final( $ctx, $outputLength );
415 415
     }
416 416
 
417 417
     /**
@@ -428,52 +428,52 @@  discard block
 block discarded – undo
428 428
      * @throws SodiumException
429 429
      * @throws TypeError
430 430
      */
431
-    public static function secretbox($inputFile, $outputFile, $nonce, $key)
431
+    public static function secretbox( $inputFile, $outputFile, $nonce, $key )
432 432
     {
433 433
         /* Type checks: */
434
-        if (!is_string($inputFile)) {
435
-            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given..');
434
+        if ( ! is_string( $inputFile ) ) {
435
+            throw new TypeError( 'Argument 1 must be a string, ' . gettype( $inputFile ) . ' given..' );
436 436
         }
437
-        if (!is_string($outputFile)) {
438
-            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
437
+        if ( ! is_string( $outputFile ) ) {
438
+            throw new TypeError( 'Argument 2 must be a string, ' . gettype( $outputFile ) . ' given.' );
439 439
         }
440
-        if (!is_string($nonce)) {
441
-            throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
440
+        if ( ! is_string( $nonce ) ) {
441
+            throw new TypeError( 'Argument 3 must be a string, ' . gettype( $nonce ) . ' given.' );
442 442
         }
443 443
 
444 444
         /* Input validation: */
445
-        if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_NONCEBYTES) {
446
-            throw new TypeError('Argument 3 must be CRYPTO_SECRETBOX_NONCEBYTES bytes');
445
+        if ( self::strlen( $nonce ) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_NONCEBYTES ) {
446
+            throw new TypeError( 'Argument 3 must be CRYPTO_SECRETBOX_NONCEBYTES bytes' );
447 447
         }
448
-        if (!is_string($key)) {
449
-            throw new TypeError('Argument 4 must be a string, ' . gettype($key) . ' given.');
448
+        if ( ! is_string( $key ) ) {
449
+            throw new TypeError( 'Argument 4 must be a string, ' . gettype( $key ) . ' given.' );
450 450
         }
451
-        if (self::strlen($key) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_KEYBYTES) {
452
-            throw new TypeError('Argument 4 must be CRYPTO_SECRETBOX_KEYBYTES bytes');
451
+        if ( self::strlen( $key ) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_KEYBYTES ) {
452
+            throw new TypeError( 'Argument 4 must be CRYPTO_SECRETBOX_KEYBYTES bytes' );
453 453
         }
454 454
 
455 455
         /** @var int $size */
456
-        $size = filesize($inputFile);
457
-        if (!is_int($size)) {
458
-            throw new SodiumException('Could not obtain the file size');
456
+        $size = filesize( $inputFile );
457
+        if ( ! is_int( $size ) ) {
458
+            throw new SodiumException( 'Could not obtain the file size' );
459 459
         }
460 460
 
461 461
         /** @var resource $ifp */
462
-        $ifp = fopen($inputFile, 'rb');
463
-        if (!is_resource($ifp)) {
464
-            throw new SodiumException('Could not open input file for reading');
462
+        $ifp = fopen( $inputFile, 'rb' );
463
+        if ( ! is_resource( $ifp ) ) {
464
+            throw new SodiumException( 'Could not open input file for reading' );
465 465
         }
466 466
 
467 467
         /** @var resource $ofp */
468
-        $ofp = fopen($outputFile, 'wb');
469
-        if (!is_resource($ofp)) {
470
-            fclose($ifp);
471
-            throw new SodiumException('Could not open output file for writing');
468
+        $ofp = fopen( $outputFile, 'wb' );
469
+        if ( ! is_resource( $ofp ) ) {
470
+            fclose( $ifp );
471
+            throw new SodiumException( 'Could not open output file for writing' );
472 472
         }
473 473
 
474
-        $res = self::secretbox_encrypt($ifp, $ofp, $size, $nonce, $key);
475
-        fclose($ifp);
476
-        fclose($ofp);
474
+        $res = self::secretbox_encrypt( $ifp, $ofp, $size, $nonce, $key );
475
+        fclose( $ifp );
476
+        fclose( $ofp );
477 477
         return $res;
478 478
     }
479 479
     /**
@@ -493,57 +493,57 @@  discard block
 block discarded – undo
493 493
      * @throws SodiumException
494 494
      * @throws TypeError
495 495
      */
496
-    public static function secretbox_open($inputFile, $outputFile, $nonce, $key)
496
+    public static function secretbox_open( $inputFile, $outputFile, $nonce, $key )
497 497
     {
498 498
         /* Type checks: */
499
-        if (!is_string($inputFile)) {
500
-            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
499
+        if ( ! is_string( $inputFile ) ) {
500
+            throw new TypeError( 'Argument 1 must be a string, ' . gettype( $inputFile ) . ' given.' );
501 501
         }
502
-        if (!is_string($outputFile)) {
503
-            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
502
+        if ( ! is_string( $outputFile ) ) {
503
+            throw new TypeError( 'Argument 2 must be a string, ' . gettype( $outputFile ) . ' given.' );
504 504
         }
505
-        if (!is_string($nonce)) {
506
-            throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
505
+        if ( ! is_string( $nonce ) ) {
506
+            throw new TypeError( 'Argument 3 must be a string, ' . gettype( $nonce ) . ' given.' );
507 507
         }
508
-        if (!is_string($key)) {
509
-            throw new TypeError('Argument 4 must be a string, ' . gettype($key) . ' given.');
508
+        if ( ! is_string( $key ) ) {
509
+            throw new TypeError( 'Argument 4 must be a string, ' . gettype( $key ) . ' given.' );
510 510
         }
511 511
 
512 512
         /* Input validation: */
513
-        if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_NONCEBYTES) {
514
-            throw new TypeError('Argument 4 must be CRYPTO_SECRETBOX_NONCEBYTES bytes');
513
+        if ( self::strlen( $nonce ) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_NONCEBYTES ) {
514
+            throw new TypeError( 'Argument 4 must be CRYPTO_SECRETBOX_NONCEBYTES bytes' );
515 515
         }
516
-        if (self::strlen($key) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_KEYBYTES) {
517
-            throw new TypeError('Argument 4 must be CRYPTO_SECRETBOXBOX_KEYBYTES bytes');
516
+        if ( self::strlen( $key ) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_KEYBYTES ) {
517
+            throw new TypeError( 'Argument 4 must be CRYPTO_SECRETBOXBOX_KEYBYTES bytes' );
518 518
         }
519 519
 
520 520
         /** @var int $size */
521
-        $size = filesize($inputFile);
522
-        if (!is_int($size)) {
523
-            throw new SodiumException('Could not obtain the file size');
521
+        $size = filesize( $inputFile );
522
+        if ( ! is_int( $size ) ) {
523
+            throw new SodiumException( 'Could not obtain the file size' );
524 524
         }
525 525
 
526 526
         /** @var resource $ifp */
527
-        $ifp = fopen($inputFile, 'rb');
528
-        if (!is_resource($ifp)) {
529
-            throw new SodiumException('Could not open input file for reading');
527
+        $ifp = fopen( $inputFile, 'rb' );
528
+        if ( ! is_resource( $ifp ) ) {
529
+            throw new SodiumException( 'Could not open input file for reading' );
530 530
         }
531 531
 
532 532
         /** @var resource $ofp */
533
-        $ofp = fopen($outputFile, 'wb');
534
-        if (!is_resource($ofp)) {
535
-            fclose($ifp);
536
-            throw new SodiumException('Could not open output file for writing');
533
+        $ofp = fopen( $outputFile, 'wb' );
534
+        if ( ! is_resource( $ofp ) ) {
535
+            fclose( $ifp );
536
+            throw new SodiumException( 'Could not open output file for writing' );
537 537
         }
538 538
 
539
-        $res = self::secretbox_decrypt($ifp, $ofp, $size, $nonce, $key);
540
-        fclose($ifp);
541
-        fclose($ofp);
539
+        $res = self::secretbox_decrypt( $ifp, $ofp, $size, $nonce, $key );
540
+        fclose( $ifp );
541
+        fclose( $ofp );
542 542
         try {
543
-            ParagonIE_Sodium_Compat::memzero($key);
544
-        } catch (SodiumException $ex) {
543
+            ParagonIE_Sodium_Compat::memzero( $key );
544
+        } catch ( SodiumException $ex ) {
545 545
             /** @psalm-suppress PossiblyUndefinedVariable */
546
-            unset($key);
546
+            unset( $key );
547 547
         }
548 548
         return $res;
549 549
     }
@@ -560,85 +560,85 @@  discard block
 block discarded – undo
560 560
      * @throws SodiumException
561 561
      * @throws TypeError
562 562
      */
563
-    public static function sign($filePath, $secretKey)
563
+    public static function sign( $filePath, $secretKey )
564 564
     {
565 565
         /* Type checks: */
566
-        if (!is_string($filePath)) {
567
-            throw new TypeError('Argument 1 must be a string, ' . gettype($filePath) . ' given.');
566
+        if ( ! is_string( $filePath ) ) {
567
+            throw new TypeError( 'Argument 1 must be a string, ' . gettype( $filePath ) . ' given.' );
568 568
         }
569
-        if (!is_string($secretKey)) {
570
-            throw new TypeError('Argument 2 must be a string, ' . gettype($secretKey) . ' given.');
569
+        if ( ! is_string( $secretKey ) ) {
570
+            throw new TypeError( 'Argument 2 must be a string, ' . gettype( $secretKey ) . ' given.' );
571 571
         }
572 572
 
573 573
         /* Input validation: */
574
-        if (self::strlen($secretKey) !== ParagonIE_Sodium_Compat::CRYPTO_SIGN_SECRETKEYBYTES) {
575
-            throw new TypeError('Argument 2 must be CRYPTO_SIGN_SECRETKEYBYTES bytes');
574
+        if ( self::strlen( $secretKey ) !== ParagonIE_Sodium_Compat::CRYPTO_SIGN_SECRETKEYBYTES ) {
575
+            throw new TypeError( 'Argument 2 must be CRYPTO_SIGN_SECRETKEYBYTES bytes' );
576 576
         }
577
-        if (PHP_INT_SIZE === 4) {
578
-            return self::sign_core32($filePath, $secretKey);
577
+        if ( PHP_INT_SIZE === 4 ) {
578
+            return self::sign_core32( $filePath, $secretKey );
579 579
         }
580 580
 
581 581
         /** @var int $size */
582
-        $size = filesize($filePath);
583
-        if (!is_int($size)) {
584
-            throw new SodiumException('Could not obtain the file size');
582
+        $size = filesize( $filePath );
583
+        if ( ! is_int( $size ) ) {
584
+            throw new SodiumException( 'Could not obtain the file size' );
585 585
         }
586 586
 
587 587
         /** @var resource $fp */
588
-        $fp = fopen($filePath, 'rb');
589
-        if (!is_resource($fp)) {
590
-            throw new SodiumException('Could not open input file for reading');
588
+        $fp = fopen( $filePath, 'rb' );
589
+        if ( ! is_resource( $fp ) ) {
590
+            throw new SodiumException( 'Could not open input file for reading' );
591 591
         }
592 592
 
593 593
         /** @var string $az */
594
-        $az = hash('sha512', self::substr($secretKey, 0, 32), true);
594
+        $az = hash( 'sha512', self::substr( $secretKey, 0, 32 ), true );
595 595
 
596
-        $az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
597
-        $az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);
596
+        $az[ 0 ] = self::intToChr( self::chrToInt( $az[ 0 ] ) & 248 );
597
+        $az[ 31 ] = self::intToChr( ( self::chrToInt( $az[ 31 ] ) & 63 ) | 64 );
598 598
 
599
-        $hs = hash_init('sha512');
600
-        self::hash_update($hs, self::substr($az, 32, 32));
599
+        $hs = hash_init( 'sha512' );
600
+        self::hash_update( $hs, self::substr( $az, 32, 32 ) );
601 601
         /** @var resource $hs */
602
-        $hs = self::updateHashWithFile($hs, $fp, $size);
602
+        $hs = self::updateHashWithFile( $hs, $fp, $size );
603 603
 
604 604
         /** @var string $nonceHash */
605
-        $nonceHash = hash_final($hs, true);
605
+        $nonceHash = hash_final( $hs, true );
606 606
 
607 607
         /** @var string $pk */
608
-        $pk = self::substr($secretKey, 32, 32);
608
+        $pk = self::substr( $secretKey, 32, 32 );
609 609
 
610 610
         /** @var string $nonce */
611
-        $nonce = ParagonIE_Sodium_Core_Ed25519::sc_reduce($nonceHash) . self::substr($nonceHash, 32);
611
+        $nonce = ParagonIE_Sodium_Core_Ed25519::sc_reduce( $nonceHash ) . self::substr( $nonceHash, 32 );
612 612
 
613 613
         /** @var string $sig */
614 614
         $sig = ParagonIE_Sodium_Core_Ed25519::ge_p3_tobytes(
615
-            ParagonIE_Sodium_Core_Ed25519::ge_scalarmult_base($nonce)
615
+            ParagonIE_Sodium_Core_Ed25519::ge_scalarmult_base( $nonce )
616 616
         );
617 617
 
618
-        $hs = hash_init('sha512');
619
-        self::hash_update($hs, self::substr($sig, 0, 32));
620
-        self::hash_update($hs, self::substr($pk, 0, 32));
618
+        $hs = hash_init( 'sha512' );
619
+        self::hash_update( $hs, self::substr( $sig, 0, 32 ) );
620
+        self::hash_update( $hs, self::substr( $pk, 0, 32 ) );
621 621
         /** @var resource $hs */
622
-        $hs = self::updateHashWithFile($hs, $fp, $size);
622
+        $hs = self::updateHashWithFile( $hs, $fp, $size );
623 623
 
624 624
         /** @var string $hramHash */
625
-        $hramHash = hash_final($hs, true);
625
+        $hramHash = hash_final( $hs, true );
626 626
 
627 627
         /** @var string $hram */
628
-        $hram = ParagonIE_Sodium_Core_Ed25519::sc_reduce($hramHash);
628
+        $hram = ParagonIE_Sodium_Core_Ed25519::sc_reduce( $hramHash );
629 629
 
630 630
         /** @var string $sigAfter */
631
-        $sigAfter = ParagonIE_Sodium_Core_Ed25519::sc_muladd($hram, $az, $nonce);
631
+        $sigAfter = ParagonIE_Sodium_Core_Ed25519::sc_muladd( $hram, $az, $nonce );
632 632
 
633 633
         /** @var string $sig */
634
-        $sig = self::substr($sig, 0, 32) . self::substr($sigAfter, 0, 32);
634
+        $sig = self::substr( $sig, 0, 32 ) . self::substr( $sigAfter, 0, 32 );
635 635
 
636 636
         try {
637
-            ParagonIE_Sodium_Compat::memzero($az);
638
-        } catch (SodiumException $ex) {
637
+            ParagonIE_Sodium_Compat::memzero( $az );
638
+        } catch ( SodiumException $ex ) {
639 639
             $az = null;
640 640
         }
641
-        fclose($fp);
641
+        fclose( $fp );
642 642
         return $sig;
643 643
     }
644 644
 
@@ -656,66 +656,66 @@  discard block
 block discarded – undo
656 656
      * @throws TypeError
657 657
      * @throws Exception
658 658
      */
659
-    public static function verify($sig, $filePath, $publicKey)
659
+    public static function verify( $sig, $filePath, $publicKey )
660 660
     {
661 661
         /* Type checks: */
662
-        if (!is_string($sig)) {
663
-            throw new TypeError('Argument 1 must be a string, ' . gettype($sig) . ' given.');
662
+        if ( ! is_string( $sig ) ) {
663
+            throw new TypeError( 'Argument 1 must be a string, ' . gettype( $sig ) . ' given.' );
664 664
         }
665
-        if (!is_string($filePath)) {
666
-            throw new TypeError('Argument 2 must be a string, ' . gettype($filePath) . ' given.');
665
+        if ( ! is_string( $filePath ) ) {
666
+            throw new TypeError( 'Argument 2 must be a string, ' . gettype( $filePath ) . ' given.' );
667 667
         }
668
-        if (!is_string($publicKey)) {
669
-            throw new TypeError('Argument 3 must be a string, ' . gettype($publicKey) . ' given.');
668
+        if ( ! is_string( $publicKey ) ) {
669
+            throw new TypeError( 'Argument 3 must be a string, ' . gettype( $publicKey ) . ' given.' );
670 670
         }
671 671
 
672 672
         /* Input validation: */
673
-        if (self::strlen($sig) !== ParagonIE_Sodium_Compat::CRYPTO_SIGN_BYTES) {
674
-            throw new TypeError('Argument 1 must be CRYPTO_SIGN_BYTES bytes');
673
+        if ( self::strlen( $sig ) !== ParagonIE_Sodium_Compat::CRYPTO_SIGN_BYTES ) {
674
+            throw new TypeError( 'Argument 1 must be CRYPTO_SIGN_BYTES bytes' );
675 675
         }
676
-        if (self::strlen($publicKey) !== ParagonIE_Sodium_Compat::CRYPTO_SIGN_PUBLICKEYBYTES) {
677
-            throw new TypeError('Argument 3 must be CRYPTO_SIGN_PUBLICKEYBYTES bytes');
676
+        if ( self::strlen( $publicKey ) !== ParagonIE_Sodium_Compat::CRYPTO_SIGN_PUBLICKEYBYTES ) {
677
+            throw new TypeError( 'Argument 3 must be CRYPTO_SIGN_PUBLICKEYBYTES bytes' );
678 678
         }
679
-        if (self::strlen($sig) < 64) {
680
-            throw new SodiumException('Signature is too short');
679
+        if ( self::strlen( $sig ) < 64 ) {
680
+            throw new SodiumException( 'Signature is too short' );
681 681
         }
682 682
 
683
-        if (PHP_INT_SIZE === 4) {
684
-            return self::verify_core32($sig, $filePath, $publicKey);
683
+        if ( PHP_INT_SIZE === 4 ) {
684
+            return self::verify_core32( $sig, $filePath, $publicKey );
685 685
         }
686 686
 
687 687
         /* Security checks */
688 688
         if (
689
-            (ParagonIE_Sodium_Core_Ed25519::chrToInt($sig[63]) & 240)
689
+            ( ParagonIE_Sodium_Core_Ed25519::chrToInt( $sig[ 63 ] ) & 240 )
690 690
                 &&
691
-            ParagonIE_Sodium_Core_Ed25519::check_S_lt_L(self::substr($sig, 32, 32))
691
+            ParagonIE_Sodium_Core_Ed25519::check_S_lt_L( self::substr( $sig, 32, 32 ) )
692 692
         ) {
693
-            throw new SodiumException('S < L - Invalid signature');
693
+            throw new SodiumException( 'S < L - Invalid signature' );
694 694
         }
695
-        if (ParagonIE_Sodium_Core_Ed25519::small_order($sig)) {
696
-            throw new SodiumException('Signature is on too small of an order');
695
+        if ( ParagonIE_Sodium_Core_Ed25519::small_order( $sig ) ) {
696
+            throw new SodiumException( 'Signature is on too small of an order' );
697 697
         }
698
-        if ((self::chrToInt($sig[63]) & 224) !== 0) {
699
-            throw new SodiumException('Invalid signature');
698
+        if ( ( self::chrToInt( $sig[ 63 ] ) & 224 ) !== 0 ) {
699
+            throw new SodiumException( 'Invalid signature' );
700 700
         }
701 701
         $d = 0;
702
-        for ($i = 0; $i < 32; ++$i) {
703
-            $d |= self::chrToInt($publicKey[$i]);
702
+        for ( $i = 0; $i < 32; ++$i ) {
703
+            $d |= self::chrToInt( $publicKey[ $i ] );
704 704
         }
705
-        if ($d === 0) {
706
-            throw new SodiumException('All zero public key');
705
+        if ( $d === 0 ) {
706
+            throw new SodiumException( 'All zero public key' );
707 707
         }
708 708
 
709 709
         /** @var int $size */
710
-        $size = filesize($filePath);
711
-        if (!is_int($size)) {
712
-            throw new SodiumException('Could not obtain the file size');
710
+        $size = filesize( $filePath );
711
+        if ( ! is_int( $size ) ) {
712
+            throw new SodiumException( 'Could not obtain the file size' );
713 713
         }
714 714
 
715 715
         /** @var resource $fp */
716
-        $fp = fopen($filePath, 'rb');
717
-        if (!is_resource($fp)) {
718
-            throw new SodiumException('Could not open input file for reading');
716
+        $fp = fopen( $filePath, 'rb' );
717
+        if ( ! is_resource( $fp ) ) {
718
+            throw new SodiumException( 'Could not open input file for reading' );
719 719
         }
720 720
 
721 721
         /** @var bool The original value of ParagonIE_Sodium_Compat::$fastMult */
@@ -725,35 +725,35 @@  discard block
 block discarded – undo
725 725
         ParagonIE_Sodium_Compat::$fastMult = true;
726 726
 
727 727
         /** @var ParagonIE_Sodium_Core_Curve25519_Ge_P3 $A */
728
-        $A = ParagonIE_Sodium_Core_Ed25519::ge_frombytes_negate_vartime($publicKey);
728
+        $A = ParagonIE_Sodium_Core_Ed25519::ge_frombytes_negate_vartime( $publicKey );
729 729
 
730
-        $hs = hash_init('sha512');
731
-        self::hash_update($hs, self::substr($sig, 0, 32));
732
-        self::hash_update($hs, self::substr($publicKey, 0, 32));
730
+        $hs = hash_init( 'sha512' );
731
+        self::hash_update( $hs, self::substr( $sig, 0, 32 ) );
732
+        self::hash_update( $hs, self::substr( $publicKey, 0, 32 ) );
733 733
         /** @var resource $hs */
734
-        $hs = self::updateHashWithFile($hs, $fp, $size);
734
+        $hs = self::updateHashWithFile( $hs, $fp, $size );
735 735
         /** @var string $hDigest */
736
-        $hDigest = hash_final($hs, true);
736
+        $hDigest = hash_final( $hs, true );
737 737
 
738 738
         /** @var string $h */
739
-        $h = ParagonIE_Sodium_Core_Ed25519::sc_reduce($hDigest) . self::substr($hDigest, 32);
739
+        $h = ParagonIE_Sodium_Core_Ed25519::sc_reduce( $hDigest ) . self::substr( $hDigest, 32 );
740 740
 
741 741
         /** @var ParagonIE_Sodium_Core_Curve25519_Ge_P2 $R */
742 742
         $R = ParagonIE_Sodium_Core_Ed25519::ge_double_scalarmult_vartime(
743 743
             $h,
744 744
             $A,
745
-            self::substr($sig, 32)
745
+            self::substr( $sig, 32 )
746 746
         );
747 747
 
748 748
         /** @var string $rcheck */
749
-        $rcheck = ParagonIE_Sodium_Core_Ed25519::ge_tobytes($R);
749
+        $rcheck = ParagonIE_Sodium_Core_Ed25519::ge_tobytes( $R );
750 750
 
751 751
         // Close the file handle
752
-        fclose($fp);
752
+        fclose( $fp );
753 753
 
754 754
         // Reset ParagonIE_Sodium_Compat::$fastMult to what it was before.
755 755
         ParagonIE_Sodium_Compat::$fastMult = $orig;
756
-        return self::verify_32($rcheck, self::substr($sig, 0, 32));
756
+        return self::verify_32( $rcheck, self::substr( $sig, 0, 32 ) );
757 757
     }
758 758
 
759 759
     /**
@@ -766,17 +766,17 @@  discard block
 block discarded – undo
766 766
      * @throws SodiumException
767 767
      * @throws TypeError
768 768
      */
769
-    protected static function box_encrypt($ifp, $ofp, $mlen, $nonce, $boxKeypair)
769
+    protected static function box_encrypt( $ifp, $ofp, $mlen, $nonce, $boxKeypair )
770 770
     {
771
-        if (PHP_INT_SIZE === 4) {
771
+        if ( PHP_INT_SIZE === 4 ) {
772 772
             return self::secretbox_encrypt(
773 773
                 $ifp,
774 774
                 $ofp,
775 775
                 $mlen,
776 776
                 $nonce,
777 777
                 ParagonIE_Sodium_Crypto32::box_beforenm(
778
-                    ParagonIE_Sodium_Crypto32::box_secretkey($boxKeypair),
779
-                    ParagonIE_Sodium_Crypto32::box_publickey($boxKeypair)
778
+                    ParagonIE_Sodium_Crypto32::box_secretkey( $boxKeypair ),
779
+                    ParagonIE_Sodium_Crypto32::box_publickey( $boxKeypair )
780 780
                 )
781 781
             );
782 782
         }
@@ -786,8 +786,8 @@  discard block
 block discarded – undo
786 786
             $mlen,
787 787
             $nonce,
788 788
             ParagonIE_Sodium_Crypto::box_beforenm(
789
-                ParagonIE_Sodium_Crypto::box_secretkey($boxKeypair),
790
-                ParagonIE_Sodium_Crypto::box_publickey($boxKeypair)
789
+                ParagonIE_Sodium_Crypto::box_secretkey( $boxKeypair ),
790
+                ParagonIE_Sodium_Crypto::box_publickey( $boxKeypair )
791 791
             )
792 792
         );
793 793
     }
@@ -803,17 +803,17 @@  discard block
 block discarded – undo
803 803
      * @throws SodiumException
804 804
      * @throws TypeError
805 805
      */
806
-    protected static function box_decrypt($ifp, $ofp, $mlen, $nonce, $boxKeypair)
806
+    protected static function box_decrypt( $ifp, $ofp, $mlen, $nonce, $boxKeypair )
807 807
     {
808
-        if (PHP_INT_SIZE === 4) {
808
+        if ( PHP_INT_SIZE === 4 ) {
809 809
             return self::secretbox_decrypt(
810 810
                 $ifp,
811 811
                 $ofp,
812 812
                 $mlen,
813 813
                 $nonce,
814 814
                 ParagonIE_Sodium_Crypto32::box_beforenm(
815
-                    ParagonIE_Sodium_Crypto32::box_secretkey($boxKeypair),
816
-                    ParagonIE_Sodium_Crypto32::box_publickey($boxKeypair)
815
+                    ParagonIE_Sodium_Crypto32::box_secretkey( $boxKeypair ),
816
+                    ParagonIE_Sodium_Crypto32::box_publickey( $boxKeypair )
817 817
                 )
818 818
             );
819 819
         }
@@ -823,8 +823,8 @@  discard block
 block discarded – undo
823 823
             $mlen,
824 824
             $nonce,
825 825
             ParagonIE_Sodium_Crypto::box_beforenm(
826
-                ParagonIE_Sodium_Crypto::box_secretkey($boxKeypair),
827
-                ParagonIE_Sodium_Crypto::box_publickey($boxKeypair)
826
+                ParagonIE_Sodium_Crypto::box_secretkey( $boxKeypair ),
827
+                ParagonIE_Sodium_Crypto::box_publickey( $boxKeypair )
828 828
             )
829 829
         );
830 830
     }
@@ -841,33 +841,33 @@  discard block
 block discarded – undo
841 841
      * @throws SodiumException
842 842
      * @throws TypeError
843 843
      */
844
-    protected static function secretbox_encrypt($ifp, $ofp, $mlen, $nonce, $key)
844
+    protected static function secretbox_encrypt( $ifp, $ofp, $mlen, $nonce, $key )
845 845
     {
846
-        if (PHP_INT_SIZE === 4) {
847
-            return self::secretbox_encrypt_core32($ifp, $ofp, $mlen, $nonce, $key);
846
+        if ( PHP_INT_SIZE === 4 ) {
847
+            return self::secretbox_encrypt_core32( $ifp, $ofp, $mlen, $nonce, $key );
848 848
         }
849 849
 
850
-        $plaintext = fread($ifp, 32);
851
-        if (!is_string($plaintext)) {
852
-            throw new SodiumException('Could not read input file');
850
+        $plaintext = fread( $ifp, 32 );
851
+        if ( ! is_string( $plaintext ) ) {
852
+            throw new SodiumException( 'Could not read input file' );
853 853
         }
854
-        $first32 = self::ftell($ifp);
854
+        $first32 = self::ftell( $ifp );
855 855
 
856 856
         /** @var string $subkey */
857
-        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);
857
+        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20( $nonce, $key );
858 858
 
859 859
         /** @var string $realNonce */
860
-        $realNonce = ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);
860
+        $realNonce = ParagonIE_Sodium_Core_Util::substr( $nonce, 16, 8 );
861 861
 
862 862
         /** @var string $block0 */
863
-        $block0 = str_repeat("\x00", 32);
863
+        $block0 = str_repeat( "\x00", 32 );
864 864
 
865 865
         /** @var int $mlen - Length of the plaintext message */
866 866
         $mlen0 = $mlen;
867
-        if ($mlen0 > 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES) {
867
+        if ( $mlen0 > 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES ) {
868 868
             $mlen0 = 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES;
869 869
         }
870
-        $block0 .= ParagonIE_Sodium_Core_Util::substr($plaintext, 0, $mlen0);
870
+        $block0 .= ParagonIE_Sodium_Core_Util::substr( $plaintext, 0, $mlen0 );
871 871
 
872 872
         /** @var string $block0 */
873 873
         $block0 = ParagonIE_Sodium_Core_Salsa20::salsa20_xor(
@@ -885,16 +885,16 @@  discard block
 block discarded – undo
885 885
         );
886 886
 
887 887
         // Pre-write 16 blank bytes for the Poly1305 tag
888
-        $start = self::ftell($ofp);
889
-        fwrite($ofp, str_repeat("\x00", 16));
888
+        $start = self::ftell( $ofp );
889
+        fwrite( $ofp, str_repeat( "\x00", 16 ) );
890 890
 
891 891
         /** @var string $c */
892 892
         $cBlock = ParagonIE_Sodium_Core_Util::substr(
893 893
             $block0,
894 894
             ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES
895 895
         );
896
-        $state->update($cBlock);
897
-        fwrite($ofp, $cBlock);
896
+        $state->update( $cBlock );
897
+        fwrite( $ofp, $cBlock );
898 898
         $mlen -= 32;
899 899
 
900 900
         /** @var int $iter */
@@ -907,15 +907,15 @@  discard block
 block discarded – undo
907 907
          * Set the cursor to the end of the first half-block. All future bytes will
908 908
          * generated from salsa20_xor_ic, starting from 1 (second block).
909 909
          */
910
-        fseek($ifp, $first32, SEEK_SET);
910
+        fseek( $ifp, $first32, SEEK_SET );
911 911
 
912
-        while ($mlen > 0) {
912
+        while ( $mlen > 0 ) {
913 913
             $blockSize = $mlen > self::BUFFER_SIZE
914 914
                 ? self::BUFFER_SIZE
915 915
                 : $mlen;
916
-            $plaintext = fread($ifp, $blockSize);
917
-            if (!is_string($plaintext)) {
918
-                throw new SodiumException('Could not read input file');
916
+            $plaintext = fread( $ifp, $blockSize );
917
+            if ( ! is_string( $plaintext ) ) {
918
+                throw new SodiumException( 'Could not read input file' );
919 919
             }
920 920
             $cBlock = ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
921 921
                 $plaintext,
@@ -923,29 +923,29 @@  discard block
 block discarded – undo
923 923
                 $iter,
924 924
                 $subkey
925 925
             );
926
-            fwrite($ofp, $cBlock, $blockSize);
927
-            $state->update($cBlock);
926
+            fwrite( $ofp, $cBlock, $blockSize );
927
+            $state->update( $cBlock );
928 928
 
929 929
             $mlen -= $blockSize;
930 930
             $iter += $incr;
931 931
         }
932 932
         try {
933
-            ParagonIE_Sodium_Compat::memzero($block0);
934
-            ParagonIE_Sodium_Compat::memzero($subkey);
935
-        } catch (SodiumException $ex) {
933
+            ParagonIE_Sodium_Compat::memzero( $block0 );
934
+            ParagonIE_Sodium_Compat::memzero( $subkey );
935
+        } catch ( SodiumException $ex ) {
936 936
             $block0 = null;
937 937
             $subkey = null;
938 938
         }
939
-        $end = self::ftell($ofp);
939
+        $end = self::ftell( $ofp );
940 940
 
941 941
         /*
942 942
          * Write the Poly1305 authentication tag that provides integrity
943 943
          * over the ciphertext (encrypt-then-MAC)
944 944
          */
945
-        fseek($ofp, $start, SEEK_SET);
946
-        fwrite($ofp, $state->finish(), ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_MACBYTES);
947
-        fseek($ofp, $end, SEEK_SET);
948
-        unset($state);
945
+        fseek( $ofp, $start, SEEK_SET );
946
+        fwrite( $ofp, $state->finish(), ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_MACBYTES );
947
+        fseek( $ofp, $end, SEEK_SET );
948
+        unset( $state );
949 949
 
950 950
         return true;
951 951
     }
@@ -962,49 +962,49 @@  discard block
 block discarded – undo
962 962
      * @throws SodiumException
963 963
      * @throws TypeError
964 964
      */
965
-    protected static function secretbox_decrypt($ifp, $ofp, $mlen, $nonce, $key)
965
+    protected static function secretbox_decrypt( $ifp, $ofp, $mlen, $nonce, $key )
966 966
     {
967
-        if (PHP_INT_SIZE === 4) {
968
-            return self::secretbox_decrypt_core32($ifp, $ofp, $mlen, $nonce, $key);
967
+        if ( PHP_INT_SIZE === 4 ) {
968
+            return self::secretbox_decrypt_core32( $ifp, $ofp, $mlen, $nonce, $key );
969 969
         }
970
-        $tag = fread($ifp, 16);
971
-        if (!is_string($tag)) {
972
-            throw new SodiumException('Could not read input file');
970
+        $tag = fread( $ifp, 16 );
971
+        if ( ! is_string( $tag ) ) {
972
+            throw new SodiumException( 'Could not read input file' );
973 973
         }
974 974
 
975 975
         /** @var string $subkey */
976
-        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);
976
+        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20( $nonce, $key );
977 977
 
978 978
         /** @var string $realNonce */
979
-        $realNonce = ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);
979
+        $realNonce = ParagonIE_Sodium_Core_Util::substr( $nonce, 16, 8 );
980 980
 
981 981
         /** @var string $block0 */
982 982
         $block0 = ParagonIE_Sodium_Core_Salsa20::salsa20(
983 983
             64,
984
-            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
984
+            ParagonIE_Sodium_Core_Util::substr( $nonce, 16, 8 ),
985 985
             $subkey
986 986
         );
987 987
 
988 988
         /* Verify the Poly1305 MAC -before- attempting to decrypt! */
989
-        $state = new ParagonIE_Sodium_Core_Poly1305_State(self::substr($block0, 0, 32));
990
-        if (!self::onetimeauth_verify($state, $ifp, $tag, $mlen)) {
991
-            throw new SodiumException('Invalid MAC');
989
+        $state = new ParagonIE_Sodium_Core_Poly1305_State( self::substr( $block0, 0, 32 ) );
990
+        if ( ! self::onetimeauth_verify( $state, $ifp, $tag, $mlen ) ) {
991
+            throw new SodiumException( 'Invalid MAC' );
992 992
         }
993 993
 
994 994
         /*
995 995
          * Set the cursor to the end of the first half-block. All future bytes will
996 996
          * generated from salsa20_xor_ic, starting from 1 (second block).
997 997
          */
998
-        $first32 = fread($ifp, 32);
999
-        if (!is_string($first32)) {
1000
-            throw new SodiumException('Could not read input file');
998
+        $first32 = fread( $ifp, 32 );
999
+        if ( ! is_string( $first32 ) ) {
1000
+            throw new SodiumException( 'Could not read input file' );
1001 1001
         }
1002
-        $first32len = self::strlen($first32);
1002
+        $first32len = self::strlen( $first32 );
1003 1003
         fwrite(
1004 1004
             $ofp,
1005 1005
             self::xorStrings(
1006
-                self::substr($block0, 32, $first32len),
1007
-                self::substr($first32, 0, $first32len)
1006
+                self::substr( $block0, 32, $first32len ),
1007
+                self::substr( $first32, 0, $first32len )
1008 1008
             )
1009 1009
         );
1010 1010
         $mlen -= 32;
@@ -1016,13 +1016,13 @@  discard block
 block discarded – undo
1016 1016
         $incr = self::BUFFER_SIZE >> 6;
1017 1017
 
1018 1018
         /* Decrypts ciphertext, writes to output file. */
1019
-        while ($mlen > 0) {
1019
+        while ( $mlen > 0 ) {
1020 1020
             $blockSize = $mlen > self::BUFFER_SIZE
1021 1021
                 ? self::BUFFER_SIZE
1022 1022
                 : $mlen;
1023
-            $ciphertext = fread($ifp, $blockSize);
1024
-            if (!is_string($ciphertext)) {
1025
-                throw new SodiumException('Could not read input file');
1023
+            $ciphertext = fread( $ifp, $blockSize );
1024
+            if ( ! is_string( $ciphertext ) ) {
1025
+                throw new SodiumException( 'Could not read input file' );
1026 1026
             }
1027 1027
             $pBlock = ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
1028 1028
                 $ciphertext,
@@ -1030,7 +1030,7 @@  discard block
 block discarded – undo
1030 1030
                 $iter,
1031 1031
                 $subkey
1032 1032
             );
1033
-            fwrite($ofp, $pBlock, $blockSize);
1033
+            fwrite( $ofp, $pBlock, $blockSize );
1034 1034
             $mlen -= $blockSize;
1035 1035
             $iter += $incr;
1036 1036
         }
@@ -1053,7 +1053,7 @@  discard block
 block discarded – undo
1053 1053
         $mlen = 0
1054 1054
     ) {
1055 1055
         /** @var int $pos */
1056
-        $pos = self::ftell($ifp);
1056
+        $pos = self::ftell( $ifp );
1057 1057
 
1058 1058
         /** @var int $iter */
1059 1059
         $iter = 1;
@@ -1061,21 +1061,21 @@  discard block
 block discarded – undo
1061 1061
         /** @var int $incr */
1062 1062
         $incr = self::BUFFER_SIZE >> 6;
1063 1063
 
1064
-        while ($mlen > 0) {
1064
+        while ( $mlen > 0 ) {
1065 1065
             $blockSize = $mlen > self::BUFFER_SIZE
1066 1066
                 ? self::BUFFER_SIZE
1067 1067
                 : $mlen;
1068
-            $ciphertext = fread($ifp, $blockSize);
1069
-            if (!is_string($ciphertext)) {
1070
-                throw new SodiumException('Could not read input file');
1068
+            $ciphertext = fread( $ifp, $blockSize );
1069
+            if ( ! is_string( $ciphertext ) ) {
1070
+                throw new SodiumException( 'Could not read input file' );
1071 1071
             }
1072
-            $state->update($ciphertext);
1072
+            $state->update( $ciphertext );
1073 1073
             $mlen -= $blockSize;
1074 1074
             $iter += $incr;
1075 1075
         }
1076
-        $res = ParagonIE_Sodium_Core_Util::verify_16($tag, $state->finish());
1076
+        $res = ParagonIE_Sodium_Core_Util::verify_16( $tag, $state->finish() );
1077 1077
 
1078
-        fseek($ifp, $pos, SEEK_SET);
1078
+        fseek( $ifp, $pos, SEEK_SET );
1079 1079
         return $res;
1080 1080
     }
1081 1081
 
@@ -1095,48 +1095,48 @@  discard block
 block discarded – undo
1095 1095
      * @psalm-suppress TypeCoercion
1096 1096
      *                 Ditto.
1097 1097
      */
1098
-    public static function updateHashWithFile($hash, $fp, $size = 0)
1098
+    public static function updateHashWithFile( $hash, $fp, $size = 0 )
1099 1099
     {
1100 1100
         /* Type checks: */
1101
-        if (PHP_VERSION_ID < 70200) {
1102
-            if (!is_resource($hash)) {
1103
-                throw new TypeError('Argument 1 must be a resource, ' . gettype($hash) . ' given.');
1101
+        if ( PHP_VERSION_ID < 70200 ) {
1102
+            if ( ! is_resource( $hash ) ) {
1103
+                throw new TypeError( 'Argument 1 must be a resource, ' . gettype( $hash ) . ' given.' );
1104 1104
             }
1105 1105
         } else {
1106
-            if (!is_object($hash)) {
1107
-                throw new TypeError('Argument 1 must be an object (PHP 7.2+), ' . gettype($hash) . ' given.');
1106
+            if ( ! is_object( $hash ) ) {
1107
+                throw new TypeError( 'Argument 1 must be an object (PHP 7.2+), ' . gettype( $hash ) . ' given.' );
1108 1108
             }
1109 1109
         }
1110 1110
 
1111
-        if (!is_resource($fp)) {
1112
-            throw new TypeError('Argument 2 must be a resource, ' . gettype($fp) . ' given.');
1111
+        if ( ! is_resource( $fp ) ) {
1112
+            throw new TypeError( 'Argument 2 must be a resource, ' . gettype( $fp ) . ' given.' );
1113 1113
         }
1114
-        if (!is_int($size)) {
1115
-            throw new TypeError('Argument 3 must be an integer, ' . gettype($size) . ' given.');
1114
+        if ( ! is_int( $size ) ) {
1115
+            throw new TypeError( 'Argument 3 must be an integer, ' . gettype( $size ) . ' given.' );
1116 1116
         }
1117 1117
 
1118 1118
         /** @var int $originalPosition */
1119
-        $originalPosition = self::ftell($fp);
1119
+        $originalPosition = self::ftell( $fp );
1120 1120
 
1121 1121
         // Move file pointer to beginning of file
1122
-        fseek($fp, 0, SEEK_SET);
1123
-        for ($i = 0; $i < $size; $i += self::BUFFER_SIZE) {
1122
+        fseek( $fp, 0, SEEK_SET );
1123
+        for ( $i = 0; $i < $size; $i += self::BUFFER_SIZE ) {
1124 1124
             /** @var string|bool $message */
1125 1125
             $message = fread(
1126 1126
                 $fp,
1127
-                ($size - $i) > self::BUFFER_SIZE
1127
+                ( $size - $i ) > self::BUFFER_SIZE
1128 1128
                     ? $size - $i
1129 1129
                     : self::BUFFER_SIZE
1130 1130
             );
1131
-            if (!is_string($message)) {
1132
-                throw new SodiumException('Unexpected error reading from file.');
1131
+            if ( ! is_string( $message ) ) {
1132
+                throw new SodiumException( 'Unexpected error reading from file.' );
1133 1133
             }
1134 1134
             /** @var string $message */
1135 1135
             /** @psalm-suppress InvalidArgument */
1136
-            self::hash_update($hash, $message);
1136
+            self::hash_update( $hash, $message );
1137 1137
         }
1138 1138
         // Reset file pointer's position
1139
-        fseek($fp, $originalPosition, SEEK_SET);
1139
+        fseek( $fp, $originalPosition, SEEK_SET );
1140 1140
         return $hash;
1141 1141
     }
1142 1142
 
@@ -1152,71 +1152,71 @@  discard block
 block discarded – undo
1152 1152
      * @throws SodiumException
1153 1153
      * @throws TypeError
1154 1154
      */
1155
-    private static function sign_core32($filePath, $secretKey)
1155
+    private static function sign_core32( $filePath, $secretKey )
1156 1156
     {
1157 1157
         /** @var int|bool $size */
1158
-        $size = filesize($filePath);
1159
-        if (!is_int($size)) {
1160
-            throw new SodiumException('Could not obtain the file size');
1158
+        $size = filesize( $filePath );
1159
+        if ( ! is_int( $size ) ) {
1160
+            throw new SodiumException( 'Could not obtain the file size' );
1161 1161
         }
1162 1162
         /** @var int $size */
1163 1163
 
1164 1164
         /** @var resource|bool $fp */
1165
-        $fp = fopen($filePath, 'rb');
1166
-        if (!is_resource($fp)) {
1167
-            throw new SodiumException('Could not open input file for reading');
1165
+        $fp = fopen( $filePath, 'rb' );
1166
+        if ( ! is_resource( $fp ) ) {
1167
+            throw new SodiumException( 'Could not open input file for reading' );
1168 1168
         }
1169 1169
         /** @var resource $fp */
1170 1170
 
1171 1171
         /** @var string $az */
1172
-        $az = hash('sha512', self::substr($secretKey, 0, 32), true);
1172
+        $az = hash( 'sha512', self::substr( $secretKey, 0, 32 ), true );
1173 1173
 
1174
-        $az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
1175
-        $az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);
1174
+        $az[ 0 ] = self::intToChr( self::chrToInt( $az[ 0 ] ) & 248 );
1175
+        $az[ 31 ] = self::intToChr( ( self::chrToInt( $az[ 31 ] ) & 63 ) | 64 );
1176 1176
 
1177
-        $hs = hash_init('sha512');
1178
-        self::hash_update($hs, self::substr($az, 32, 32));
1177
+        $hs = hash_init( 'sha512' );
1178
+        self::hash_update( $hs, self::substr( $az, 32, 32 ) );
1179 1179
         /** @var resource $hs */
1180
-        $hs = self::updateHashWithFile($hs, $fp, $size);
1180
+        $hs = self::updateHashWithFile( $hs, $fp, $size );
1181 1181
 
1182 1182
         /** @var string $nonceHash */
1183
-        $nonceHash = hash_final($hs, true);
1183
+        $nonceHash = hash_final( $hs, true );
1184 1184
 
1185 1185
         /** @var string $pk */
1186
-        $pk = self::substr($secretKey, 32, 32);
1186
+        $pk = self::substr( $secretKey, 32, 32 );
1187 1187
 
1188 1188
         /** @var string $nonce */
1189
-        $nonce = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($nonceHash) . self::substr($nonceHash, 32);
1189
+        $nonce = ParagonIE_Sodium_Core32_Ed25519::sc_reduce( $nonceHash ) . self::substr( $nonceHash, 32 );
1190 1190
 
1191 1191
         /** @var string $sig */
1192 1192
         $sig = ParagonIE_Sodium_Core32_Ed25519::ge_p3_tobytes(
1193
-            ParagonIE_Sodium_Core32_Ed25519::ge_scalarmult_base($nonce)
1193
+            ParagonIE_Sodium_Core32_Ed25519::ge_scalarmult_base( $nonce )
1194 1194
         );
1195 1195
 
1196
-        $hs = hash_init('sha512');
1197
-        self::hash_update($hs, self::substr($sig, 0, 32));
1198
-        self::hash_update($hs, self::substr($pk, 0, 32));
1196
+        $hs = hash_init( 'sha512' );
1197
+        self::hash_update( $hs, self::substr( $sig, 0, 32 ) );
1198
+        self::hash_update( $hs, self::substr( $pk, 0, 32 ) );
1199 1199
         /** @var resource $hs */
1200
-        $hs = self::updateHashWithFile($hs, $fp, $size);
1200
+        $hs = self::updateHashWithFile( $hs, $fp, $size );
1201 1201
 
1202 1202
         /** @var string $hramHash */
1203
-        $hramHash = hash_final($hs, true);
1203
+        $hramHash = hash_final( $hs, true );
1204 1204
 
1205 1205
         /** @var string $hram */
1206
-        $hram = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($hramHash);
1206
+        $hram = ParagonIE_Sodium_Core32_Ed25519::sc_reduce( $hramHash );
1207 1207
 
1208 1208
         /** @var string $sigAfter */
1209
-        $sigAfter = ParagonIE_Sodium_Core32_Ed25519::sc_muladd($hram, $az, $nonce);
1209
+        $sigAfter = ParagonIE_Sodium_Core32_Ed25519::sc_muladd( $hram, $az, $nonce );
1210 1210
 
1211 1211
         /** @var string $sig */
1212
-        $sig = self::substr($sig, 0, 32) . self::substr($sigAfter, 0, 32);
1212
+        $sig = self::substr( $sig, 0, 32 ) . self::substr( $sigAfter, 0, 32 );
1213 1213
 
1214 1214
         try {
1215
-            ParagonIE_Sodium_Compat::memzero($az);
1216
-        } catch (SodiumException $ex) {
1215
+            ParagonIE_Sodium_Compat::memzero( $az );
1216
+        } catch ( SodiumException $ex ) {
1217 1217
             $az = null;
1218 1218
         }
1219
-        fclose($fp);
1219
+        fclose( $fp );
1220 1220
         return $sig;
1221 1221
     }
1222 1222
 
@@ -1234,37 +1234,37 @@  discard block
 block discarded – undo
1234 1234
      * @throws SodiumException
1235 1235
      * @throws Exception
1236 1236
      */
1237
-    public static function verify_core32($sig, $filePath, $publicKey)
1237
+    public static function verify_core32( $sig, $filePath, $publicKey )
1238 1238
     {
1239 1239
         /* Security checks */
1240
-        if (ParagonIE_Sodium_Core32_Ed25519::check_S_lt_L(self::substr($sig, 32, 32))) {
1241
-            throw new SodiumException('S < L - Invalid signature');
1240
+        if ( ParagonIE_Sodium_Core32_Ed25519::check_S_lt_L( self::substr( $sig, 32, 32 ) ) ) {
1241
+            throw new SodiumException( 'S < L - Invalid signature' );
1242 1242
         }
1243
-        if (ParagonIE_Sodium_Core32_Ed25519::small_order($sig)) {
1244
-            throw new SodiumException('Signature is on too small of an order');
1243
+        if ( ParagonIE_Sodium_Core32_Ed25519::small_order( $sig ) ) {
1244
+            throw new SodiumException( 'Signature is on too small of an order' );
1245 1245
         }
1246
-        if ((self::chrToInt($sig[63]) & 224) !== 0) {
1247
-            throw new SodiumException('Invalid signature');
1246
+        if ( ( self::chrToInt( $sig[ 63 ] ) & 224 ) !== 0 ) {
1247
+            throw new SodiumException( 'Invalid signature' );
1248 1248
         }
1249 1249
         $d = 0;
1250
-        for ($i = 0; $i < 32; ++$i) {
1251
-            $d |= self::chrToInt($publicKey[$i]);
1250
+        for ( $i = 0; $i < 32; ++$i ) {
1251
+            $d |= self::chrToInt( $publicKey[ $i ] );
1252 1252
         }
1253
-        if ($d === 0) {
1254
-            throw new SodiumException('All zero public key');
1253
+        if ( $d === 0 ) {
1254
+            throw new SodiumException( 'All zero public key' );
1255 1255
         }
1256 1256
 
1257 1257
         /** @var int|bool $size */
1258
-        $size = filesize($filePath);
1259
-        if (!is_int($size)) {
1260
-            throw new SodiumException('Could not obtain the file size');
1258
+        $size = filesize( $filePath );
1259
+        if ( ! is_int( $size ) ) {
1260
+            throw new SodiumException( 'Could not obtain the file size' );
1261 1261
         }
1262 1262
         /** @var int $size */
1263 1263
 
1264 1264
         /** @var resource|bool $fp */
1265
-        $fp = fopen($filePath, 'rb');
1266
-        if (!is_resource($fp)) {
1267
-            throw new SodiumException('Could not open input file for reading');
1265
+        $fp = fopen( $filePath, 'rb' );
1266
+        if ( ! is_resource( $fp ) ) {
1267
+            throw new SodiumException( 'Could not open input file for reading' );
1268 1268
         }
1269 1269
         /** @var resource $fp */
1270 1270
 
@@ -1275,35 +1275,35 @@  discard block
 block discarded – undo
1275 1275
         ParagonIE_Sodium_Compat::$fastMult = true;
1276 1276
 
1277 1277
         /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A */
1278
-        $A = ParagonIE_Sodium_Core32_Ed25519::ge_frombytes_negate_vartime($publicKey);
1278
+        $A = ParagonIE_Sodium_Core32_Ed25519::ge_frombytes_negate_vartime( $publicKey );
1279 1279
 
1280
-        $hs = hash_init('sha512');
1281
-        self::hash_update($hs, self::substr($sig, 0, 32));
1282
-        self::hash_update($hs, self::substr($publicKey, 0, 32));
1280
+        $hs = hash_init( 'sha512' );
1281
+        self::hash_update( $hs, self::substr( $sig, 0, 32 ) );
1282
+        self::hash_update( $hs, self::substr( $publicKey, 0, 32 ) );
1283 1283
         /** @var resource $hs */
1284
-        $hs = self::updateHashWithFile($hs, $fp, $size);
1284
+        $hs = self::updateHashWithFile( $hs, $fp, $size );
1285 1285
         /** @var string $hDigest */
1286
-        $hDigest = hash_final($hs, true);
1286
+        $hDigest = hash_final( $hs, true );
1287 1287
 
1288 1288
         /** @var string $h */
1289
-        $h = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($hDigest) . self::substr($hDigest, 32);
1289
+        $h = ParagonIE_Sodium_Core32_Ed25519::sc_reduce( $hDigest ) . self::substr( $hDigest, 32 );
1290 1290
 
1291 1291
         /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $R */
1292 1292
         $R = ParagonIE_Sodium_Core32_Ed25519::ge_double_scalarmult_vartime(
1293 1293
             $h,
1294 1294
             $A,
1295
-            self::substr($sig, 32)
1295
+            self::substr( $sig, 32 )
1296 1296
         );
1297 1297
 
1298 1298
         /** @var string $rcheck */
1299
-        $rcheck = ParagonIE_Sodium_Core32_Ed25519::ge_tobytes($R);
1299
+        $rcheck = ParagonIE_Sodium_Core32_Ed25519::ge_tobytes( $R );
1300 1300
 
1301 1301
         // Close the file handle
1302
-        fclose($fp);
1302
+        fclose( $fp );
1303 1303
 
1304 1304
         // Reset ParagonIE_Sodium_Compat::$fastMult to what it was before.
1305 1305
         ParagonIE_Sodium_Compat::$fastMult = $orig;
1306
-        return self::verify_32($rcheck, self::substr($sig, 0, 32));
1306
+        return self::verify_32( $rcheck, self::substr( $sig, 0, 32 ) );
1307 1307
     }
1308 1308
 
1309 1309
     /**
@@ -1318,29 +1318,29 @@  discard block
 block discarded – undo
1318 1318
      * @throws SodiumException
1319 1319
      * @throws TypeError
1320 1320
      */
1321
-    protected static function secretbox_encrypt_core32($ifp, $ofp, $mlen, $nonce, $key)
1321
+    protected static function secretbox_encrypt_core32( $ifp, $ofp, $mlen, $nonce, $key )
1322 1322
     {
1323
-        $plaintext = fread($ifp, 32);
1324
-        if (!is_string($plaintext)) {
1325
-            throw new SodiumException('Could not read input file');
1323
+        $plaintext = fread( $ifp, 32 );
1324
+        if ( ! is_string( $plaintext ) ) {
1325
+            throw new SodiumException( 'Could not read input file' );
1326 1326
         }
1327
-        $first32 = self::ftell($ifp);
1327
+        $first32 = self::ftell( $ifp );
1328 1328
 
1329 1329
         /** @var string $subkey */
1330
-        $subkey = ParagonIE_Sodium_Core32_HSalsa20::hsalsa20($nonce, $key);
1330
+        $subkey = ParagonIE_Sodium_Core32_HSalsa20::hsalsa20( $nonce, $key );
1331 1331
 
1332 1332
         /** @var string $realNonce */
1333
-        $realNonce = ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8);
1333
+        $realNonce = ParagonIE_Sodium_Core32_Util::substr( $nonce, 16, 8 );
1334 1334
 
1335 1335
         /** @var string $block0 */
1336
-        $block0 = str_repeat("\x00", 32);
1336
+        $block0 = str_repeat( "\x00", 32 );
1337 1337
 
1338 1338
         /** @var int $mlen - Length of the plaintext message */
1339 1339
         $mlen0 = $mlen;
1340
-        if ($mlen0 > 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES) {
1340
+        if ( $mlen0 > 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES ) {
1341 1341
             $mlen0 = 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES;
1342 1342
         }
1343
-        $block0 .= ParagonIE_Sodium_Core32_Util::substr($plaintext, 0, $mlen0);
1343
+        $block0 .= ParagonIE_Sodium_Core32_Util::substr( $plaintext, 0, $mlen0 );
1344 1344
 
1345 1345
         /** @var string $block0 */
1346 1346
         $block0 = ParagonIE_Sodium_Core32_Salsa20::salsa20_xor(
@@ -1358,16 +1358,16 @@  discard block
 block discarded – undo
1358 1358
         );
1359 1359
 
1360 1360
         // Pre-write 16 blank bytes for the Poly1305 tag
1361
-        $start = self::ftell($ofp);
1362
-        fwrite($ofp, str_repeat("\x00", 16));
1361
+        $start = self::ftell( $ofp );
1362
+        fwrite( $ofp, str_repeat( "\x00", 16 ) );
1363 1363
 
1364 1364
         /** @var string $c */
1365 1365
         $cBlock = ParagonIE_Sodium_Core32_Util::substr(
1366 1366
             $block0,
1367 1367
             ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES
1368 1368
         );
1369
-        $state->update($cBlock);
1370
-        fwrite($ofp, $cBlock);
1369
+        $state->update( $cBlock );
1370
+        fwrite( $ofp, $cBlock );
1371 1371
         $mlen -= 32;
1372 1372
 
1373 1373
         /** @var int $iter */
@@ -1380,15 +1380,15 @@  discard block
 block discarded – undo
1380 1380
          * Set the cursor to the end of the first half-block. All future bytes will
1381 1381
          * generated from salsa20_xor_ic, starting from 1 (second block).
1382 1382
          */
1383
-        fseek($ifp, $first32, SEEK_SET);
1383
+        fseek( $ifp, $first32, SEEK_SET );
1384 1384
 
1385
-        while ($mlen > 0) {
1385
+        while ( $mlen > 0 ) {
1386 1386
             $blockSize = $mlen > self::BUFFER_SIZE
1387 1387
                 ? self::BUFFER_SIZE
1388 1388
                 : $mlen;
1389
-            $plaintext = fread($ifp, $blockSize);
1390
-            if (!is_string($plaintext)) {
1391
-                throw new SodiumException('Could not read input file');
1389
+            $plaintext = fread( $ifp, $blockSize );
1390
+            if ( ! is_string( $plaintext ) ) {
1391
+                throw new SodiumException( 'Could not read input file' );
1392 1392
             }
1393 1393
             $cBlock = ParagonIE_Sodium_Core32_Salsa20::salsa20_xor_ic(
1394 1394
                 $plaintext,
@@ -1396,29 +1396,29 @@  discard block
 block discarded – undo
1396 1396
                 $iter,
1397 1397
                 $subkey
1398 1398
             );
1399
-            fwrite($ofp, $cBlock, $blockSize);
1400
-            $state->update($cBlock);
1399
+            fwrite( $ofp, $cBlock, $blockSize );
1400
+            $state->update( $cBlock );
1401 1401
 
1402 1402
             $mlen -= $blockSize;
1403 1403
             $iter += $incr;
1404 1404
         }
1405 1405
         try {
1406
-            ParagonIE_Sodium_Compat::memzero($block0);
1407
-            ParagonIE_Sodium_Compat::memzero($subkey);
1408
-        } catch (SodiumException $ex) {
1406
+            ParagonIE_Sodium_Compat::memzero( $block0 );
1407
+            ParagonIE_Sodium_Compat::memzero( $subkey );
1408
+        } catch ( SodiumException $ex ) {
1409 1409
             $block0 = null;
1410 1410
             $subkey = null;
1411 1411
         }
1412
-        $end = self::ftell($ofp);
1412
+        $end = self::ftell( $ofp );
1413 1413
 
1414 1414
         /*
1415 1415
          * Write the Poly1305 authentication tag that provides integrity
1416 1416
          * over the ciphertext (encrypt-then-MAC)
1417 1417
          */
1418
-        fseek($ofp, $start, SEEK_SET);
1419
-        fwrite($ofp, $state->finish(), ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_MACBYTES);
1420
-        fseek($ofp, $end, SEEK_SET);
1421
-        unset($state);
1418
+        fseek( $ofp, $start, SEEK_SET );
1419
+        fwrite( $ofp, $state->finish(), ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_MACBYTES );
1420
+        fseek( $ofp, $end, SEEK_SET );
1421
+        unset( $state );
1422 1422
 
1423 1423
         return true;
1424 1424
     }
@@ -1435,46 +1435,46 @@  discard block
 block discarded – undo
1435 1435
      * @throws SodiumException
1436 1436
      * @throws TypeError
1437 1437
      */
1438
-    protected static function secretbox_decrypt_core32($ifp, $ofp, $mlen, $nonce, $key)
1438
+    protected static function secretbox_decrypt_core32( $ifp, $ofp, $mlen, $nonce, $key )
1439 1439
     {
1440
-        $tag = fread($ifp, 16);
1441
-        if (!is_string($tag)) {
1442
-            throw new SodiumException('Could not read input file');
1440
+        $tag = fread( $ifp, 16 );
1441
+        if ( ! is_string( $tag ) ) {
1442
+            throw new SodiumException( 'Could not read input file' );
1443 1443
         }
1444 1444
 
1445 1445
         /** @var string $subkey */
1446
-        $subkey = ParagonIE_Sodium_Core32_HSalsa20::hsalsa20($nonce, $key);
1446
+        $subkey = ParagonIE_Sodium_Core32_HSalsa20::hsalsa20( $nonce, $key );
1447 1447
 
1448 1448
         /** @var string $realNonce */
1449
-        $realNonce = ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8);
1449
+        $realNonce = ParagonIE_Sodium_Core32_Util::substr( $nonce, 16, 8 );
1450 1450
 
1451 1451
         /** @var string $block0 */
1452 1452
         $block0 = ParagonIE_Sodium_Core32_Salsa20::salsa20(
1453 1453
             64,
1454
-            ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8),
1454
+            ParagonIE_Sodium_Core32_Util::substr( $nonce, 16, 8 ),
1455 1455
             $subkey
1456 1456
         );
1457 1457
 
1458 1458
         /* Verify the Poly1305 MAC -before- attempting to decrypt! */
1459
-        $state = new ParagonIE_Sodium_Core32_Poly1305_State(self::substr($block0, 0, 32));
1460
-        if (!self::onetimeauth_verify_core32($state, $ifp, $tag, $mlen)) {
1461
-            throw new SodiumException('Invalid MAC');
1459
+        $state = new ParagonIE_Sodium_Core32_Poly1305_State( self::substr( $block0, 0, 32 ) );
1460
+        if ( ! self::onetimeauth_verify_core32( $state, $ifp, $tag, $mlen ) ) {
1461
+            throw new SodiumException( 'Invalid MAC' );
1462 1462
         }
1463 1463
 
1464 1464
         /*
1465 1465
          * Set the cursor to the end of the first half-block. All future bytes will
1466 1466
          * generated from salsa20_xor_ic, starting from 1 (second block).
1467 1467
          */
1468
-        $first32 = fread($ifp, 32);
1469
-        if (!is_string($first32)) {
1470
-            throw new SodiumException('Could not read input file');
1468
+        $first32 = fread( $ifp, 32 );
1469
+        if ( ! is_string( $first32 ) ) {
1470
+            throw new SodiumException( 'Could not read input file' );
1471 1471
         }
1472
-        $first32len = self::strlen($first32);
1472
+        $first32len = self::strlen( $first32 );
1473 1473
         fwrite(
1474 1474
             $ofp,
1475 1475
             self::xorStrings(
1476
-                self::substr($block0, 32, $first32len),
1477
-                self::substr($first32, 0, $first32len)
1476
+                self::substr( $block0, 32, $first32len ),
1477
+                self::substr( $first32, 0, $first32len )
1478 1478
             )
1479 1479
         );
1480 1480
         $mlen -= 32;
@@ -1486,13 +1486,13 @@  discard block
 block discarded – undo
1486 1486
         $incr = self::BUFFER_SIZE >> 6;
1487 1487
 
1488 1488
         /* Decrypts ciphertext, writes to output file. */
1489
-        while ($mlen > 0) {
1489
+        while ( $mlen > 0 ) {
1490 1490
             $blockSize = $mlen > self::BUFFER_SIZE
1491 1491
                 ? self::BUFFER_SIZE
1492 1492
                 : $mlen;
1493
-            $ciphertext = fread($ifp, $blockSize);
1494
-            if (!is_string($ciphertext)) {
1495
-                throw new SodiumException('Could not read input file');
1493
+            $ciphertext = fread( $ifp, $blockSize );
1494
+            if ( ! is_string( $ciphertext ) ) {
1495
+                throw new SodiumException( 'Could not read input file' );
1496 1496
             }
1497 1497
             $pBlock = ParagonIE_Sodium_Core32_Salsa20::salsa20_xor_ic(
1498 1498
                 $ciphertext,
@@ -1500,7 +1500,7 @@  discard block
 block discarded – undo
1500 1500
                 $iter,
1501 1501
                 $subkey
1502 1502
             );
1503
-            fwrite($ofp, $pBlock, $blockSize);
1503
+            fwrite( $ofp, $pBlock, $blockSize );
1504 1504
             $mlen -= $blockSize;
1505 1505
             $iter += $incr;
1506 1506
         }
@@ -1525,22 +1525,22 @@  discard block
 block discarded – undo
1525 1525
         $mlen = 0
1526 1526
     ) {
1527 1527
         /** @var int $pos */
1528
-        $pos = self::ftell($ifp);
1528
+        $pos = self::ftell( $ifp );
1529 1529
 
1530
-        while ($mlen > 0) {
1530
+        while ( $mlen > 0 ) {
1531 1531
             $blockSize = $mlen > self::BUFFER_SIZE
1532 1532
                 ? self::BUFFER_SIZE
1533 1533
                 : $mlen;
1534
-            $ciphertext = fread($ifp, $blockSize);
1535
-            if (!is_string($ciphertext)) {
1536
-                throw new SodiumException('Could not read input file');
1534
+            $ciphertext = fread( $ifp, $blockSize );
1535
+            if ( ! is_string( $ciphertext ) ) {
1536
+                throw new SodiumException( 'Could not read input file' );
1537 1537
             }
1538
-            $state->update($ciphertext);
1538
+            $state->update( $ciphertext );
1539 1539
             $mlen -= $blockSize;
1540 1540
         }
1541
-        $res = ParagonIE_Sodium_Core32_Util::verify_16($tag, $state->finish());
1541
+        $res = ParagonIE_Sodium_Core32_Util::verify_16( $tag, $state->finish() );
1542 1542
 
1543
-        fseek($ifp, $pos, SEEK_SET);
1543
+        fseek( $ifp, $pos, SEEK_SET );
1544 1544
         return $res;
1545 1545
     }
1546 1546
 
@@ -1549,12 +1549,12 @@  discard block
 block discarded – undo
1549 1549
      * @return int
1550 1550
      * @throws SodiumException
1551 1551
      */
1552
-    private static function ftell($resource)
1552
+    private static function ftell( $resource )
1553 1553
     {
1554
-        $return = ftell($resource);
1555
-        if (!is_int($return)) {
1556
-            throw new SodiumException('ftell() returned false');
1554
+        $return = ftell( $resource );
1555
+        if ( ! is_int( $return ) ) {
1556
+            throw new SodiumException( 'ftell() returned false' );
1557 1557
         }
1558
-        return (int) $return;
1558
+        return (int)$return;
1559 1559
     }
1560 1560
 }
Please login to merge, or discard this patch.
Braces   +20 added lines, -40 removed lines patch added patch discarded remove patch
@@ -6,8 +6,7 @@  discard block
 block discarded – undo
6 6
 /**
7 7
  * Class ParagonIE_Sodium_File
8 8
  */
9
-class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
10
-{
9
+class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util {
11 10
     /* PHP's default buffer size is 8192 for fread()/fwrite(). */
12 11
     const BUFFER_SIZE = 8192;
13 12
 
@@ -25,8 +24,7 @@  discard block
 block discarded – undo
25 24
      * @throws SodiumException
26 25
      * @throws TypeError
27 26
      */
28
-    public static function box($inputFile, $outputFile, $nonce, $keyPair)
29
-    {
27
+    public static function box($inputFile, $outputFile, $nonce, $keyPair) {
30 28
         /* Type checks: */
31 29
         if (!is_string($inputFile)) {
32 30
             throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
@@ -91,8 +89,7 @@  discard block
 block discarded – undo
91 89
      * @throws SodiumException
92 90
      * @throws TypeError
93 91
      */
94
-    public static function box_open($inputFile, $outputFile, $nonce, $keypair)
95
-    {
92
+    public static function box_open($inputFile, $outputFile, $nonce, $keypair) {
96 93
         /* Type checks: */
97 94
         if (!is_string($inputFile)) {
98 95
             throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
@@ -161,8 +158,7 @@  discard block
 block discarded – undo
161 158
      * @throws SodiumException
162 159
      * @throws TypeError
163 160
      */
164
-    public static function box_seal($inputFile, $outputFile, $publicKey)
165
-    {
161
+    public static function box_seal($inputFile, $outputFile, $publicKey) {
166 162
         /* Type checks: */
167 163
         if (!is_string($inputFile)) {
168 164
             throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
@@ -265,8 +261,7 @@  discard block
 block discarded – undo
265 261
      * @throws SodiumException
266 262
      * @throws TypeError
267 263
      */
268
-    public static function box_seal_open($inputFile, $outputFile, $ecdhKeypair)
269
-    {
264
+    public static function box_seal_open($inputFile, $outputFile, $ecdhKeypair) {
270 265
         /* Type checks: */
271 266
         if (!is_string($inputFile)) {
272 267
             throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
@@ -350,8 +345,7 @@  discard block
 block discarded – undo
350 345
      * @throws TypeError
351 346
      * @psalm-suppress FailedTypeResolution
352 347
      */
353
-    public static function generichash($filePath, $key = '', $outputLength = 32)
354
-    {
348
+    public static function generichash($filePath, $key = '', $outputLength = 32) {
355 349
         /* Type checks: */
356 350
         if (!is_string($filePath)) {
357 351
             throw new TypeError('Argument 1 must be a string, ' . gettype($filePath) . ' given.');
@@ -428,8 +422,7 @@  discard block
 block discarded – undo
428 422
      * @throws SodiumException
429 423
      * @throws TypeError
430 424
      */
431
-    public static function secretbox($inputFile, $outputFile, $nonce, $key)
432
-    {
425
+    public static function secretbox($inputFile, $outputFile, $nonce, $key) {
433 426
         /* Type checks: */
434 427
         if (!is_string($inputFile)) {
435 428
             throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given..');
@@ -493,8 +486,7 @@  discard block
 block discarded – undo
493 486
      * @throws SodiumException
494 487
      * @throws TypeError
495 488
      */
496
-    public static function secretbox_open($inputFile, $outputFile, $nonce, $key)
497
-    {
489
+    public static function secretbox_open($inputFile, $outputFile, $nonce, $key) {
498 490
         /* Type checks: */
499 491
         if (!is_string($inputFile)) {
500 492
             throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
@@ -560,8 +552,7 @@  discard block
 block discarded – undo
560 552
      * @throws SodiumException
561 553
      * @throws TypeError
562 554
      */
563
-    public static function sign($filePath, $secretKey)
564
-    {
555
+    public static function sign($filePath, $secretKey) {
565 556
         /* Type checks: */
566 557
         if (!is_string($filePath)) {
567 558
             throw new TypeError('Argument 1 must be a string, ' . gettype($filePath) . ' given.');
@@ -656,8 +647,7 @@  discard block
 block discarded – undo
656 647
      * @throws TypeError
657 648
      * @throws Exception
658 649
      */
659
-    public static function verify($sig, $filePath, $publicKey)
660
-    {
650
+    public static function verify($sig, $filePath, $publicKey) {
661 651
         /* Type checks: */
662 652
         if (!is_string($sig)) {
663 653
             throw new TypeError('Argument 1 must be a string, ' . gettype($sig) . ' given.');
@@ -766,8 +756,7 @@  discard block
 block discarded – undo
766 756
      * @throws SodiumException
767 757
      * @throws TypeError
768 758
      */
769
-    protected static function box_encrypt($ifp, $ofp, $mlen, $nonce, $boxKeypair)
770
-    {
759
+    protected static function box_encrypt($ifp, $ofp, $mlen, $nonce, $boxKeypair) {
771 760
         if (PHP_INT_SIZE === 4) {
772 761
             return self::secretbox_encrypt(
773 762
                 $ifp,
@@ -803,8 +792,7 @@  discard block
 block discarded – undo
803 792
      * @throws SodiumException
804 793
      * @throws TypeError
805 794
      */
806
-    protected static function box_decrypt($ifp, $ofp, $mlen, $nonce, $boxKeypair)
807
-    {
795
+    protected static function box_decrypt($ifp, $ofp, $mlen, $nonce, $boxKeypair) {
808 796
         if (PHP_INT_SIZE === 4) {
809 797
             return self::secretbox_decrypt(
810 798
                 $ifp,
@@ -841,8 +829,7 @@  discard block
 block discarded – undo
841 829
      * @throws SodiumException
842 830
      * @throws TypeError
843 831
      */
844
-    protected static function secretbox_encrypt($ifp, $ofp, $mlen, $nonce, $key)
845
-    {
832
+    protected static function secretbox_encrypt($ifp, $ofp, $mlen, $nonce, $key) {
846 833
         if (PHP_INT_SIZE === 4) {
847 834
             return self::secretbox_encrypt_core32($ifp, $ofp, $mlen, $nonce, $key);
848 835
         }
@@ -962,8 +949,7 @@  discard block
 block discarded – undo
962 949
      * @throws SodiumException
963 950
      * @throws TypeError
964 951
      */
965
-    protected static function secretbox_decrypt($ifp, $ofp, $mlen, $nonce, $key)
966
-    {
952
+    protected static function secretbox_decrypt($ifp, $ofp, $mlen, $nonce, $key) {
967 953
         if (PHP_INT_SIZE === 4) {
968 954
             return self::secretbox_decrypt_core32($ifp, $ofp, $mlen, $nonce, $key);
969 955
         }
@@ -1095,8 +1081,7 @@  discard block
 block discarded – undo
1095 1081
      * @psalm-suppress TypeCoercion
1096 1082
      *                 Ditto.
1097 1083
      */
1098
-    public static function updateHashWithFile($hash, $fp, $size = 0)
1099
-    {
1084
+    public static function updateHashWithFile($hash, $fp, $size = 0) {
1100 1085
         /* Type checks: */
1101 1086
         if (PHP_VERSION_ID < 70200) {
1102 1087
             if (!is_resource($hash)) {
@@ -1152,8 +1137,7 @@  discard block
 block discarded – undo
1152 1137
      * @throws SodiumException
1153 1138
      * @throws TypeError
1154 1139
      */
1155
-    private static function sign_core32($filePath, $secretKey)
1156
-    {
1140
+    private static function sign_core32($filePath, $secretKey) {
1157 1141
         /** @var int|bool $size */
1158 1142
         $size = filesize($filePath);
1159 1143
         if (!is_int($size)) {
@@ -1234,8 +1218,7 @@  discard block
 block discarded – undo
1234 1218
      * @throws SodiumException
1235 1219
      * @throws Exception
1236 1220
      */
1237
-    public static function verify_core32($sig, $filePath, $publicKey)
1238
-    {
1221
+    public static function verify_core32($sig, $filePath, $publicKey) {
1239 1222
         /* Security checks */
1240 1223
         if (ParagonIE_Sodium_Core32_Ed25519::check_S_lt_L(self::substr($sig, 32, 32))) {
1241 1224
             throw new SodiumException('S < L - Invalid signature');
@@ -1318,8 +1301,7 @@  discard block
 block discarded – undo
1318 1301
      * @throws SodiumException
1319 1302
      * @throws TypeError
1320 1303
      */
1321
-    protected static function secretbox_encrypt_core32($ifp, $ofp, $mlen, $nonce, $key)
1322
-    {
1304
+    protected static function secretbox_encrypt_core32($ifp, $ofp, $mlen, $nonce, $key) {
1323 1305
         $plaintext = fread($ifp, 32);
1324 1306
         if (!is_string($plaintext)) {
1325 1307
             throw new SodiumException('Could not read input file');
@@ -1435,8 +1417,7 @@  discard block
 block discarded – undo
1435 1417
      * @throws SodiumException
1436 1418
      * @throws TypeError
1437 1419
      */
1438
-    protected static function secretbox_decrypt_core32($ifp, $ofp, $mlen, $nonce, $key)
1439
-    {
1420
+    protected static function secretbox_decrypt_core32($ifp, $ofp, $mlen, $nonce, $key) {
1440 1421
         $tag = fread($ifp, 16);
1441 1422
         if (!is_string($tag)) {
1442 1423
             throw new SodiumException('Could not read input file');
@@ -1549,8 +1530,7 @@  discard block
 block discarded – undo
1549 1530
      * @return int
1550 1531
      * @throws SodiumException
1551 1532
      */
1552
-    private static function ftell($resource)
1553
-    {
1533
+    private static function ftell($resource) {
1554 1534
         $return = ftell($resource);
1555 1535
         if (!is_int($return)) {
1556 1536
             throw new SodiumException('ftell() returned false');
Please login to merge, or discard this patch.