Wordfence Security – Firewall & Malware Scan - Version 7.3.2

Version Description

  • May 16, 2019 =
  • Improvement: Updated sodium_compat to address an incompatibility that may occur with the pending WordPress 5.2.1 update.
  • Improvement: Clarified text around the reCAPTCHA setting to indicate v3 keys must be used.
  • Improvement: Added detection for Jetpack and a notice when XML-RPC authentication is disabled.
  • Fix: Suppressed error messages on the NTP time check to compensate for hosts with UDP connections disabled.
Download this release

Release Info

Developer wfryan
Plugin Icon 128x128 Wordfence Security – Firewall & Malware Scan
Version 7.3.2
Comparing to
See all releases

Code changes from version 7.3.1 to 7.3.2

Files changed (79) hide show
  1. css/{activity-report-widget.1557854560.css → activity-report-widget.1558031354.css} +0 -0
  2. css/{diff.1557854560.css → diff.1558031354.css} +0 -0
  3. css/{dt_table.1557854560.css → dt_table.1558031354.css} +0 -0
  4. css/{fullLog.1557854560.css → fullLog.1558031354.css} +0 -0
  5. css/{iptraf.1557854560.css → iptraf.1558031354.css} +0 -0
  6. css/{jquery-ui-timepicker-addon.1557854560.css → jquery-ui-timepicker-addon.1558031354.css} +0 -0
  7. css/{jquery-ui.min.1557854560.css → jquery-ui.min.1558031354.css} +0 -0
  8. css/{jquery-ui.structure.min.1557854560.css → jquery-ui.structure.min.1558031354.css} +0 -0
  9. css/{jquery-ui.theme.min.1557854560.css → jquery-ui.theme.min.1558031354.css} +0 -0
  10. css/{main.1557854560.css → main.1558031354.css} +0 -0
  11. css/{phpinfo.1557854560.css → phpinfo.1558031354.css} +0 -0
  12. css/{wf-adminbar.1557854560.css → wf-adminbar.1558031354.css} +0 -0
  13. css/{wf-colorbox.1557854560.css → wf-colorbox.1558031354.css} +0 -0
  14. css/{wf-font-awesome.1557854560.css → wf-font-awesome.1558031354.css} +0 -0
  15. css/{wf-global.1557854560.css → wf-global.1558031354.css} +0 -0
  16. css/{wf-ionicons.1557854560.css → wf-ionicons.1558031354.css} +0 -0
  17. css/{wf-onboarding.1557854560.css → wf-onboarding.1558031354.css} +0 -0
  18. css/{wf-roboto-font.1557854560.css → wf-roboto-font.1558031354.css} +0 -0
  19. css/{wfselect2.min.1557854560.css → wfselect2.min.1558031354.css} +0 -0
  20. css/{wordfenceBox.1557854560.css → wordfenceBox.1558031354.css} +0 -0
  21. js/{Chart.bundle.min.1557854560.js → Chart.bundle.min.1558031354.js} +0 -0
  22. js/{admin.1557854560.js → admin.1558031354.js} +0 -0
  23. js/{admin.ajaxWatcher.1557854560.js → admin.ajaxWatcher.1558031354.js} +0 -0
  24. js/{admin.liveTraffic.1557854560.js → admin.liveTraffic.1558031354.js} +0 -0
  25. js/{date.1557854560.js → date.1558031354.js} +0 -0
  26. js/{jquery-ui-timepicker-addon.1557854560.js → jquery-ui-timepicker-addon.1558031354.js} +0 -0
  27. js/{jquery.colorbox-min.1557854560.js → jquery.colorbox-min.1558031354.js} +0 -0
  28. js/{jquery.colorbox.1557854560.js → jquery.colorbox.1558031354.js} +0 -0
  29. js/{jquery.dataTables.min.1557854560.js → jquery.dataTables.min.1558031354.js} +0 -0
  30. js/{jquery.qrcode.min.1557854560.js → jquery.qrcode.min.1558031354.js} +0 -0
  31. js/{jquery.tmpl.min.1557854560.js → jquery.tmpl.min.1558031354.js} +0 -0
  32. js/{jquery.tools.min.1557854560.js → jquery.tools.min.1558031354.js} +0 -0
  33. js/{knockout-3.3.0.1557854560.js → knockout-3.3.0.1558031354.js} +0 -0
  34. js/{wfdashboard.1557854560.js → wfdashboard.1558031354.js} +0 -0
  35. js/{wfdropdown.1557854560.js → wfdropdown.1558031354.js} +0 -0
  36. js/{wfglobal.1557854560.js → wfglobal.1558031354.js} +0 -0
  37. js/{wfpopover.1557854560.js → wfpopover.1558031354.js} +0 -0
  38. js/{wfselect2.min.1557854560.js → wfselect2.min.1558031354.js} +0 -0
  39. modules/login-security/classes/controller/time.php +2 -2
  40. modules/login-security/classes/controller/wordfencels.php +17 -0
  41. modules/login-security/css/{admin-global.1557854560.css → admin-global.1558031354.css} +0 -0
  42. modules/login-security/css/{admin.1557854560.css → admin.1558031354.css} +0 -0
  43. modules/login-security/css/{colorbox.1557854560.css → colorbox.1558031354.css} +0 -0
  44. modules/login-security/css/{font-awesome.1557854560.css → font-awesome.1558031354.css} +0 -0
  45. modules/login-security/css/{ionicons.1557854560.css → ionicons.1558031354.css} +0 -0
  46. modules/login-security/css/{jquery-ui-timepicker-addon.1557854560.css → jquery-ui-timepicker-addon.1558031354.css} +0 -0
  47. modules/login-security/css/{jquery-ui.min.1557854560.css → jquery-ui.min.1558031354.css} +0 -0
  48. modules/login-security/css/{jquery-ui.structure.min.1557854560.css → jquery-ui.structure.min.1558031354.css} +0 -0
  49. modules/login-security/css/{jquery-ui.theme.min.1557854560.css → jquery-ui.theme.min.1558031354.css} +0 -0
  50. modules/login-security/css/{login.1557854560.css → login.1558031354.css} +0 -0
  51. modules/login-security/js/{admin-global.1557854560.js → admin-global.1558031354.js} +0 -0
  52. modules/login-security/js/{admin.1557854560.js → admin.1558031354.js} +0 -0
  53. modules/login-security/js/{jquery-ui-timepicker-addon.1557854560.js → jquery-ui-timepicker-addon.1558031354.js} +0 -0
  54. modules/login-security/js/{jquery.colorbox.1557854560.js → jquery.colorbox.1558031354.js} +0 -0
  55. modules/login-security/js/{jquery.colorbox.min.1557854560.js → jquery.colorbox.min.1558031354.js} +0 -0
  56. modules/login-security/js/{jquery.qrcode.min.1557854560.js → jquery.qrcode.min.1558031354.js} +0 -0
  57. modules/login-security/js/{jquery.tmpl.min.1557854560.js → jquery.tmpl.min.1558031354.js} +0 -0
  58. modules/login-security/js/{login.1557854560.js → login.1558031354.js} +0 -0
  59. modules/login-security/views/options/option-captcha.php +3 -3
  60. modules/login-security/wordfence-ls.php +2 -2
  61. readme.txt +7 -1
  62. vendor/composer/installed.json +6 -6
  63. vendor/paragonie/sodium_compat/lib/php72compat.php +6 -6
  64. vendor/paragonie/sodium_compat/lib/sodium_compat.php +15 -26
  65. vendor/paragonie/sodium_compat/namespaced/Core/Salsa20.php +2 -2
  66. vendor/paragonie/sodium_compat/namespaced/Core/Xsalsa20.php +1 -1
  67. vendor/paragonie/sodium_compat/phpstan.neon.dist +18 -0
  68. vendor/paragonie/sodium_compat/src/Compat.php +50 -9
  69. vendor/paragonie/sodium_compat/src/Core/BLAKE2b.php +2 -1
  70. vendor/paragonie/sodium_compat/src/Core/ChaCha20/Ctx.php +3 -4
  71. vendor/paragonie/sodium_compat/src/Core/Curve25519/Fe.php +13 -11
  72. vendor/paragonie/sodium_compat/src/Core/Util.php +1 -1
  73. vendor/paragonie/sodium_compat/src/Core32/BLAKE2b.php +1 -1
  74. vendor/paragonie/sodium_compat/src/Core32/ChaCha20/Ctx.php +3 -3
  75. vendor/paragonie/sodium_compat/src/Core32/Int32.php +137 -1
  76. vendor/paragonie/sodium_compat/src/Core32/Int64.php +149 -6
  77. vendor/paragonie/sodium_compat/src/Core32/X25519.php +1 -11
  78. vendor/paragonie/sodium_compat/src/File.php +2 -8
  79. wordfence.php +3 -3
css/{activity-report-widget.1557854560.css → activity-report-widget.1558031354.css} RENAMED
File without changes
css/{diff.1557854560.css → diff.1558031354.css} RENAMED
File without changes
css/{dt_table.1557854560.css → dt_table.1558031354.css} RENAMED
File without changes
css/{fullLog.1557854560.css → fullLog.1558031354.css} RENAMED
File without changes
css/{iptraf.1557854560.css → iptraf.1558031354.css} RENAMED
File without changes
css/{jquery-ui-timepicker-addon.1557854560.css → jquery-ui-timepicker-addon.1558031354.css} RENAMED
File without changes
css/{jquery-ui.min.1557854560.css → jquery-ui.min.1558031354.css} RENAMED
File without changes
css/{jquery-ui.structure.min.1557854560.css → jquery-ui.structure.min.1558031354.css} RENAMED
File without changes
css/{jquery-ui.theme.min.1557854560.css → jquery-ui.theme.min.1558031354.css} RENAMED
File without changes
css/{main.1557854560.css → main.1558031354.css} RENAMED
File without changes
css/{phpinfo.1557854560.css → phpinfo.1558031354.css} RENAMED
File without changes
css/{wf-adminbar.1557854560.css → wf-adminbar.1558031354.css} RENAMED
File without changes
css/{wf-colorbox.1557854560.css → wf-colorbox.1558031354.css} RENAMED
File without changes
css/{wf-font-awesome.1557854560.css → wf-font-awesome.1558031354.css} RENAMED
File without changes
css/{wf-global.1557854560.css → wf-global.1558031354.css} RENAMED
File without changes
css/{wf-ionicons.1557854560.css → wf-ionicons.1558031354.css} RENAMED
File without changes
css/{wf-onboarding.1557854560.css → wf-onboarding.1558031354.css} RENAMED
File without changes
css/{wf-roboto-font.1557854560.css → wf-roboto-font.1558031354.css} RENAMED
File without changes
css/{wfselect2.min.1557854560.css → wfselect2.min.1558031354.css} RENAMED
File without changes
css/{wordfenceBox.1557854560.css → wordfenceBox.1558031354.css} RENAMED
File without changes
js/{Chart.bundle.min.1557854560.js → Chart.bundle.min.1558031354.js} RENAMED
File without changes
js/{admin.1557854560.js → admin.1558031354.js} RENAMED
File without changes
js/{admin.ajaxWatcher.1557854560.js → admin.ajaxWatcher.1558031354.js} RENAMED
File without changes
js/{admin.liveTraffic.1557854560.js → admin.liveTraffic.1558031354.js} RENAMED
File without changes
js/{date.1557854560.js → date.1558031354.js} RENAMED
File without changes
js/{jquery-ui-timepicker-addon.1557854560.js → jquery-ui-timepicker-addon.1558031354.js} RENAMED
File without changes
js/{jquery.colorbox-min.1557854560.js → jquery.colorbox-min.1558031354.js} RENAMED
File without changes
js/{jquery.colorbox.1557854560.js → jquery.colorbox.1558031354.js} RENAMED
File without changes
js/{jquery.dataTables.min.1557854560.js → jquery.dataTables.min.1558031354.js} RENAMED
File without changes
js/{jquery.qrcode.min.1557854560.js → jquery.qrcode.min.1558031354.js} RENAMED
File without changes
js/{jquery.tmpl.min.1557854560.js → jquery.tmpl.min.1558031354.js} RENAMED
File without changes
js/{jquery.tools.min.1557854560.js → jquery.tools.min.1558031354.js} RENAMED
File without changes
js/{knockout-3.3.0.1557854560.js → knockout-3.3.0.1558031354.js} RENAMED
File without changes
js/{wfdashboard.1557854560.js → wfdashboard.1558031354.js} RENAMED
File without changes
js/{wfdropdown.1557854560.js → wfdropdown.1558031354.js} RENAMED
File without changes
js/{wfglobal.1557854560.js → wfglobal.1558031354.js} RENAMED
File without changes
js/{wfpopover.1557854560.js → wfpopover.1558031354.js} RENAMED
File without changes
js/{wfselect2.min.1557854560.js → wfselect2.min.1558031354.js} RENAMED
File without changes
modules/login-security/classes/controller/time.php CHANGED
@@ -88,11 +88,11 @@ class Controller_Time {
88
  $fractional = sprintf('%010d', round(($remote_originate - ((int) $remote_originate)) * 0x100000000));
89
  $packed = pack('N', $secondsNTP) . pack('N', $fractional);
90
 
91
- if (fwrite($socket, $packet . $packed)) {
92
  $response = fread($socket, 48);
93
  $local_transmitted = microtime(true);
94
  }
95
- fclose($socket);
96
 
97
  if (isset($response) && Model_Crypto::strlen($response) == 48) {
98
  break;
88
  $fractional = sprintf('%010d', round(($remote_originate - ((int) $remote_originate)) * 0x100000000));
89
  $packed = pack('N', $secondsNTP) . pack('N', $fractional);
90
 
91
+ if (@fwrite($socket, $packet . $packed)) {
92
  $response = fread($socket, 48);
93
  $local_transmitted = microtime(true);
94
  }
95
+ @fclose($socket);
96
 
97
  if (isset($response) && Model_Crypto::strlen($response) == 48) {
98
  break;
modules/login-security/classes/controller/wordfencels.php CHANGED
@@ -114,6 +114,23 @@ class Controller_WordfenceLS {
114
  END
115
  );
116
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  }
118
 
119
  /**
114
  END
115
  );
116
  }
117
+
118
+ if ((is_plugin_active('jetpack/jetpack.php') || (is_multisite() && is_plugin_active_for_network('jetpack/jetpack.php'))) && !Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ALLOW_XML_RPC) && Controller_Permissions::shared()->can_manage_settings()) {
119
+ if (is_multisite()) {
120
+ add_action('network_admin_notices', array($this, '_jetpack_xml_rpc_notice'));
121
+ }
122
+ else {
123
+ add_action('admin_notices', array($this, '_jetpack_xml_rpc_notice'));
124
+ }
125
+ }
126
+ }
127
+
128
+ /**
129
+ * Notices
130
+ */
131
+
132
+ public function _jetpack_xml_rpc_notice() {
133
+ echo '<div class="notice notice-warning"><p>' . sprintf(__('XML-RPC authentication is disabled. Jetpack is currently active and requires XML-RPC authentication to work correctly. <a href="%s">Manage Settings</a>', 'wordfence-2fa'), esc_url(network_admin_url('admin.php?page=WFLS#top#settings'))) . '</p></div>';
134
  }
135
 
136
  /**
modules/login-security/css/{admin-global.1557854560.css → admin-global.1558031354.css} RENAMED
File without changes
modules/login-security/css/{admin.1557854560.css → admin.1558031354.css} RENAMED
File without changes
modules/login-security/css/{colorbox.1557854560.css → colorbox.1558031354.css} RENAMED
File without changes
modules/login-security/css/{font-awesome.1557854560.css → font-awesome.1558031354.css} RENAMED
File without changes
modules/login-security/css/{ionicons.1557854560.css → ionicons.1558031354.css} RENAMED
File without changes
modules/login-security/css/{jquery-ui-timepicker-addon.1557854560.css → jquery-ui-timepicker-addon.1558031354.css} RENAMED
File without changes
modules/login-security/css/{jquery-ui.min.1557854560.css → jquery-ui.min.1558031354.css} RENAMED
File without changes
modules/login-security/css/{jquery-ui.structure.min.1557854560.css → jquery-ui.structure.min.1558031354.css} RENAMED
File without changes
modules/login-security/css/{jquery-ui.theme.min.1557854560.css → jquery-ui.theme.min.1558031354.css} RENAMED
File without changes
modules/login-security/css/{login.1557854560.css → login.1558031354.css} RENAMED
File without changes
modules/login-security/js/{admin-global.1557854560.js → admin-global.1558031354.js} RENAMED
File without changes
modules/login-security/js/{admin.1557854560.js → admin.1558031354.js} RENAMED
File without changes
modules/login-security/js/{jquery-ui-timepicker-addon.1557854560.js → jquery-ui-timepicker-addon.1558031354.js} RENAMED
File without changes
modules/login-security/js/{jquery.colorbox.1557854560.js → jquery.colorbox.1558031354.js} RENAMED
File without changes
modules/login-security/js/{jquery.colorbox.min.1557854560.js → jquery.colorbox.min.1558031354.js} RENAMED
File without changes
modules/login-security/js/{jquery.qrcode.min.1557854560.js → jquery.qrcode.min.1558031354.js} RENAMED
File without changes
modules/login-security/js/{jquery.tmpl.min.1557854560.js → jquery.tmpl.min.1558031354.js} RENAMED
File without changes
modules/login-security/js/{login.1557854560.js → login.1558031354.js} RENAMED
File without changes
modules/login-security/views/options/option-captcha.php CHANGED
@@ -19,7 +19,7 @@ $secretValue = \WordfenceLS\Controller_Settings::shared()->get($secretOptionName
19
  <li>
20
  <strong id="wfls-enable-auth-captcha-label"><?php _e('Enable reCAPTCHA on the login and user registration pages', 'wordfence-2fa'); ?></strong>
21
  </li>
22
- <li class="wfls-option-subtitle"><?php _e('Note: This feature requires a free site key and secret for the <a href="https://www.google.com/recaptcha/intro/v3.html" target="_blank" rel="noopener noreferrer">reCAPTCHA Service</a>.', 'wordfence-2fa'); ?></li>
23
  </ul>
24
  </li>
25
  </ul>
@@ -30,11 +30,11 @@ $secretValue = \WordfenceLS\Controller_Settings::shared()->get($secretOptionName
30
  <li>
31
  <table>
32
  <tr class="wfls-option wfls-option-text" data-original-value="<?php echo esc_attr($siteKeyValue); ?>" data-text-option="<?php echo esc_attr($siteKeyOptionName); ?>">
33
- <th id="wfls-enable-captcha-site-key-label" class="wfls-padding-add-bottom"><?php _e('Site Key', 'wordfence'); ?></th>
34
  <td class="wfls-option-text wfls-padding-add-bottom"><input type="text" name="recaptchaSiteKey" id="input-recaptchaSiteKey" class="wfls-form-control" value="<?php echo esc_attr($siteKeyValue); ?>"<?php if (!$currentEnableValue) { echo ' disabled'; } ?>></td>
35
  </tr>
36
  <tr class="wfls-option wfls-option-text" data-original-value="<?php echo esc_attr($secretValue); ?>" data-text-option="<?php echo esc_attr($secretOptionName); ?>">
37
- <th id="wfls-enable-captcha-secret-label"><?php _e('Secret', 'wordfence'); ?></th>
38
  <td class="wfls-option-text"><input type="text" name="recaptchaSecret" id="input-recaptchaSecret" class="wfls-form-control" value="<?php echo esc_attr($secretValue); ?>"<?php if (!$currentEnableValue) { echo ' disabled'; } ?>></td>
39
  </tr>
40
  </table>
19
  <li>
20
  <strong id="wfls-enable-auth-captcha-label"><?php _e('Enable reCAPTCHA on the login and user registration pages', 'wordfence-2fa'); ?></strong>
21
  </li>
22
+ <li class="wfls-option-subtitle"><?php _e('Note: This feature requires a free site key and secret for the <a href="https://www.google.com/recaptcha/intro/v3.html" target="_blank" rel="noopener noreferrer">Google reCAPTCHA v3 Service</a>.', 'wordfence-2fa'); ?></li>
23
  </ul>
24
  </li>
25
  </ul>
30
  <li>
31
  <table>
32
  <tr class="wfls-option wfls-option-text" data-original-value="<?php echo esc_attr($siteKeyValue); ?>" data-text-option="<?php echo esc_attr($siteKeyOptionName); ?>">
33
+ <th id="wfls-enable-captcha-site-key-label" class="wfls-padding-add-bottom"><?php _e('reCAPTCHA v3 Site Key', 'wordfence'); ?></th>
34
  <td class="wfls-option-text wfls-padding-add-bottom"><input type="text" name="recaptchaSiteKey" id="input-recaptchaSiteKey" class="wfls-form-control" value="<?php echo esc_attr($siteKeyValue); ?>"<?php if (!$currentEnableValue) { echo ' disabled'; } ?>></td>
35
  </tr>
36
  <tr class="wfls-option wfls-option-text" data-original-value="<?php echo esc_attr($secretValue); ?>" data-text-option="<?php echo esc_attr($secretOptionName); ?>">
37
+ <th id="wfls-enable-captcha-secret-label"><?php _e('reCAPTCHA v3 Secret', 'wordfence'); ?></th>
38
  <td class="wfls-option-text"><input type="text" name="recaptchaSecret" id="input-recaptchaSecret" class="wfls-form-control" value="<?php echo esc_attr($secretValue); ?>"<?php if (!$currentEnableValue) { echo ' disabled'; } ?>></td>
39
  </tr>
40
  </table>
modules/login-security/wordfence-ls.php CHANGED
@@ -26,8 +26,8 @@ if ($wfCoreActive && !(isset($wfCoreLoading) && $wfCoreLoading)) {
26
  else {
27
  define('WORDFENCE_LS_FROM_CORE', ($wfCoreActive && isset($wfCoreLoading) && $wfCoreLoading));
28
 
29
- define('WORDFENCE_LS_VERSION', '1.0.0');
30
- define('WORDFENCE_LS_BUILD_NUMBER', '1557854560');
31
 
32
  if (!WORDFENCE_LS_FROM_CORE) {
33
  global $wp_plugin_paths;
26
  else {
27
  define('WORDFENCE_LS_FROM_CORE', ($wfCoreActive && isset($wfCoreLoading) && $wfCoreLoading));
28
 
29
+ define('WORDFENCE_LS_VERSION', '1.0.1');
30
+ define('WORDFENCE_LS_BUILD_NUMBER', '1558031354');
31
 
32
  if (!WORDFENCE_LS_FROM_CORE) {
33
  global $wp_plugin_paths;
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: security, firewall, malware scanner, web application firewall, two factor
4
  Requires at least: 3.9
5
  Requires PHP: 5.3
6
  Tested up to: 5.2
7
- Stable tag: 7.3.1
8
 
9
  Secure your website with the most comprehensive WordPress security plugin. Firewall, malware scan, blocking, live traffic, login security & more.
10
 
@@ -183,6 +183,12 @@ Secure your website with Wordfence.
183
 
184
  == Changelog ==
185
 
 
 
 
 
 
 
186
  = 7.3.1 - May 14, 2019 =
187
  * Improvement: Two-factor authentication is new and improved, now available on all Premium and Free installations.
188
  * Improvement: Added Google reCAPTCHA v3 support to the login and registration forms.
4
  Requires at least: 3.9
5
  Requires PHP: 5.3
6
  Tested up to: 5.2
7
+ Stable tag: 7.3.2
8
 
9
  Secure your website with the most comprehensive WordPress security plugin. Firewall, malware scan, blocking, live traffic, login security & more.
10
 
183
 
184
  == Changelog ==
185
 
186
+ = 7.3.2 - May 16, 2019 =
187
+ * Improvement: Updated sodium_compat to address an incompatibility that may occur with the pending WordPress 5.2.1 update.
188
+ * Improvement: Clarified text around the reCAPTCHA setting to indicate v3 keys must be used.
189
+ * Improvement: Added detection for Jetpack and a notice when XML-RPC authentication is disabled.
190
+ * Fix: Suppressed error messages on the NTP time check to compensate for hosts with UDP connections disabled.
191
+
192
  = 7.3.1 - May 14, 2019 =
193
  * Improvement: Two-factor authentication is new and improved, now available on all Premium and Free installations.
194
  * Improvement: Added Google reCAPTCHA v3 support to the login and registration forms.
vendor/composer/installed.json CHANGED
@@ -267,17 +267,17 @@
267
  },
268
  {
269
  "name": "paragonie/sodium_compat",
270
- "version": "v1.9.1",
271
- "version_normalized": "1.9.1.0",
272
  "source": {
273
  "type": "git",
274
  "url": "https://github.com/paragonie/sodium_compat.git",
275
- "reference": "87125d5b265f98c4d1b8d83a1f0726607c229421"
276
  },
277
  "dist": {
278
  "type": "zip",
279
- "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/87125d5b265f98c4d1b8d83a1f0726607c229421",
280
- "reference": "87125d5b265f98c4d1b8d83a1f0726607c229421",
281
  "shasum": ""
282
  },
283
  "require": {
@@ -291,7 +291,7 @@
291
  "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.",
292
  "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security."
293
  },
294
- "time": "2019-03-20T17:19:05+00:00",
295
  "type": "library",
296
  "installation-source": "dist",
297
  "autoload": {
267
  },
268
  {
269
  "name": "paragonie/sodium_compat",
270
+ "version": "v1.10.0",
271
+ "version_normalized": "1.10.0.0",
272
  "source": {
273
  "type": "git",
274
  "url": "https://github.com/paragonie/sodium_compat.git",
275
+ "reference": "228a9fc64cf4ba84c7967c1076d94209db03e0ee"
276
  },
277
  "dist": {
278
  "type": "zip",
279
+ "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/228a9fc64cf4ba84c7967c1076d94209db03e0ee",
280
+ "reference": "228a9fc64cf4ba84c7967c1076d94209db03e0ee",
281
  "shasum": ""
282
  },
283
  "require": {
291
  "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.",
292
  "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security."
293
  },
294
+ "time": "2019-05-13T16:04:50+00:00",
295
  "type": "library",
296
  "installation-source": "dist",
297
  "autoload": {
vendor/paragonie/sodium_compat/lib/php72compat.php CHANGED
@@ -107,7 +107,7 @@ if (!is_callable('sodium_crypto_aead_aes256gcm_decrypt')) {
107
  * @param string $assocData
108
  * @param string $nonce
109
  * @param string $key
110
- * @return string
111
  */
112
  function sodium_crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key)
113
  {
@@ -153,7 +153,7 @@ if (!is_callable('sodium_crypto_aead_chacha20poly1305_decrypt')) {
153
  * @param string $assocData
154
  * @param string $nonce
155
  * @param string $key
156
- * @return string
157
  */
158
  function sodium_crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key)
159
  {
@@ -199,7 +199,7 @@ if (!is_callable('sodium_crypto_aead_chacha20poly1305_ietf_decrypt')) {
199
  * @param string $assocData
200
  * @param string $nonce
201
  * @param string $key
202
- * @return string
203
  */
204
  function sodium_crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key)
205
  {
@@ -245,7 +245,7 @@ if (!is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_decrypt')) {
245
  * @param string $assocData
246
  * @param string $nonce
247
  * @param string $key
248
- * @return string
249
  */
250
  function sodium_crypto_aead_xchacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key)
251
  {
@@ -952,7 +952,7 @@ if (!is_callable('sodium_hex2bin')) {
952
  if (!is_callable('sodium_increment')) {
953
  /**
954
  * @see ParagonIE_Sodium_Compat::increment()
955
- * @param &string $string
956
  * @return void
957
  * @throws SodiumException
958
  * @throws TypeError
@@ -1009,7 +1009,7 @@ if (!is_callable('sodium_memcmp')) {
1009
  if (!is_callable('sodium_memzero')) {
1010
  /**
1011
  * @see ParagonIE_Sodium_Compat::memzero()
1012
- * @param string &$str
1013
  * @return void
1014
  * @throws SodiumException
1015
  * @throws TypeError
107
  * @param string $assocData
108
  * @param string $nonce
109
  * @param string $key
110
+ * @return string|bool
111
  */
112
  function sodium_crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key)
113
  {
153
  * @param string $assocData
154
  * @param string $nonce
155
  * @param string $key
156
+ * @return string|bool
157
  */
158
  function sodium_crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key)
159
  {
199
  * @param string $assocData
200
  * @param string $nonce
201
  * @param string $key
202
+ * @return string|bool
203
  */
204
  function sodium_crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key)
205
  {
245
  * @param string $assocData
246
  * @param string $nonce
247
  * @param string $key
248
+ * @return string|bool
249
  */
250
  function sodium_crypto_aead_xchacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key)
251
  {
952
  if (!is_callable('sodium_increment')) {
953
  /**
954
  * @see ParagonIE_Sodium_Compat::increment()
955
+ * @param string $string
956
  * @return void
957
  * @throws SodiumException
958
  * @throws TypeError
1009
  if (!is_callable('sodium_memzero')) {
1010
  /**
1011
  * @see ParagonIE_Sodium_Compat::memzero()
1012
+ * @param string $str
1013
  * @return void
1014
  * @throws SodiumException
1015
  * @throws TypeError
vendor/paragonie/sodium_compat/lib/sodium_compat.php CHANGED
@@ -45,16 +45,14 @@ if (!is_callable('\\Sodium\\crypto_aead_aes256gcm_decrypt')) {
45
  * @param string $nonce
46
  * @param string $key
47
  * @return string|bool
48
- * @throws \SodiumException
49
- * @throws \TypeError
50
  */
51
  function crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key)
52
  {
53
  try {
54
  return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key);
55
- } catch (Error $ex) {
56
  return false;
57
- } catch (Exception $ex) {
58
  return false;
59
  }
60
  }
@@ -93,16 +91,14 @@ if (!is_callable('\\Sodium\\crypto_aead_chacha20poly1305_decrypt')) {
93
  * @param string $nonce
94
  * @param string $key
95
  * @return string|bool
96
- * @throws \SodiumException
97
- * @throws \TypeError
98
  */
99
  function crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key)
100
  {
101
  try {
102
  return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key);
103
- } catch (Error $ex) {
104
  return false;
105
- } catch (Exception $ex) {
106
  return false;
107
  }
108
  }
@@ -131,16 +127,14 @@ if (!is_callable('\\Sodium\\crypto_aead_chacha20poly1305_ietf_decrypt')) {
131
  * @param string $nonce
132
  * @param string $key
133
  * @return string|bool
134
- * @throws \SodiumException
135
- * @throws \TypeError
136
  */
137
  function crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key)
138
  {
139
  try {
140
  return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key);
141
- } catch (Error $ex) {
142
  return false;
143
- } catch (Exception $ex) {
144
  return false;
145
  }
146
  }
@@ -238,16 +232,14 @@ if (!is_callable('\\Sodium\\crypto_box_open')) {
238
  * @param string $nonce
239
  * @param string $kp
240
  * @return string|bool
241
- * @throws \SodiumException
242
- * @throws \TypeError
243
  */
244
  function crypto_box_open($message, $nonce, $kp)
245
  {
246
  try {
247
  return ParagonIE_Sodium_Compat::crypto_box_open($message, $nonce, $kp);
248
- } catch (Error $ex) {
249
  return false;
250
- } catch (Exception $ex) {
251
  return false;
252
  }
253
  }
@@ -298,15 +290,14 @@ if (!is_callable('\\Sodium\\crypto_box_seal_open')) {
298
  * @param string $message
299
  * @param string $kp
300
  * @return string|bool
301
- * @throws \TypeError
302
  */
303
  function crypto_box_seal_open($message, $kp)
304
  {
305
  try {
306
  return ParagonIE_Sodium_Compat::crypto_box_seal_open($message, $kp);
307
- } catch (\Error $ex) {
308
  return false;
309
- } catch (\Exception $ex) {
310
  return false;
311
  }
312
  }
@@ -543,16 +534,14 @@ if (!is_callable('\\Sodium\\crypto_secretbox_open')) {
543
  * @param string $nonce
544
  * @param string $key
545
  * @return string|bool
546
- * @throws \SodiumException
547
- * @throws \TypeError
548
  */
549
  function crypto_secretbox_open($message, $nonce, $key)
550
  {
551
  try {
552
  return ParagonIE_Sodium_Compat::crypto_secretbox_open($message, $nonce, $key);
553
- } catch (Error $ex) {
554
  return false;
555
- } catch (Exception $ex) {
556
  return false;
557
  }
558
  }
@@ -622,9 +611,9 @@ if (!is_callable('\\Sodium\\crypto_sign_open')) {
622
  {
623
  try {
624
  return ParagonIE_Sodium_Compat::crypto_sign_open($signedMessage, $pk);
625
- } catch (\Error $ex) {
626
  return false;
627
- } catch (\Exception $ex) {
628
  return false;
629
  }
630
  }
@@ -810,7 +799,7 @@ if (!is_callable('\\Sodium\\randombytes_uniform')) {
810
  * @see ParagonIE_Sodium_Compat::randombytes_uniform()
811
  * @param int $upperLimit
812
  * @return int
813
- * @throws \Exception
814
  * @throws \Error
815
  */
816
  function randombytes_uniform($upperLimit)
45
  * @param string $nonce
46
  * @param string $key
47
  * @return string|bool
 
 
48
  */
49
  function crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key)
50
  {
51
  try {
52
  return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key);
53
+ } catch (\TypeError $ex) {
54
  return false;
55
+ } catch (\SodiumException $ex) {
56
  return false;
57
  }
58
  }
91
  * @param string $nonce
92
  * @param string $key
93
  * @return string|bool
 
 
94
  */
95
  function crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key)
96
  {
97
  try {
98
  return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key);
99
+ } catch (\TypeError $ex) {
100
  return false;
101
+ } catch (\SodiumException $ex) {
102
  return false;
103
  }
104
  }
127
  * @param string $nonce
128
  * @param string $key
129
  * @return string|bool
 
 
130
  */
131
  function crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key)
132
  {
133
  try {
134
  return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key);
135
+ } catch (\TypeError $ex) {
136
  return false;
137
+ } catch (\SodiumException $ex) {
138
  return false;
139
  }
140
  }
232
  * @param string $nonce
233
  * @param string $kp
234
  * @return string|bool
 
 
235
  */
236
  function crypto_box_open($message, $nonce, $kp)
237
  {
238
  try {
239
  return ParagonIE_Sodium_Compat::crypto_box_open($message, $nonce, $kp);
240
+ } catch (\TypeError $ex) {
241
  return false;
242
+ } catch (\SodiumException $ex) {
243
  return false;
244
  }
245
  }
290
  * @param string $message
291
  * @param string $kp
292
  * @return string|bool
 
293
  */
294
  function crypto_box_seal_open($message, $kp)
295
  {
296
  try {
297
  return ParagonIE_Sodium_Compat::crypto_box_seal_open($message, $kp);
298
+ } catch (\TypeError $ex) {
299
  return false;
300
+ } catch (\SodiumException $ex) {
301
  return false;
302
  }
303
  }
534
  * @param string $nonce
535
  * @param string $key
536
  * @return string|bool
 
 
537
  */
538
  function crypto_secretbox_open($message, $nonce, $key)
539
  {
540
  try {
541
  return ParagonIE_Sodium_Compat::crypto_secretbox_open($message, $nonce, $key);
542
+ } catch (\TypeError $ex) {
543
  return false;
544
+ } catch (\SodiumException $ex) {
545
  return false;
546
  }
547
  }
611
  {
612
  try {
613
  return ParagonIE_Sodium_Compat::crypto_sign_open($signedMessage, $pk);
614
+ } catch (\TypeError $ex) {
615
  return false;
616
+ } catch (\SodiumException $ex) {
617
  return false;
618
  }
619
  }
799
  * @see ParagonIE_Sodium_Compat::randombytes_uniform()
800
  * @param int $upperLimit
801
  * @return int
802
+ * @throws \SodiumException
803
  * @throws \Error
804
  */
805
  function randombytes_uniform($upperLimit)
vendor/paragonie/sodium_compat/namespaced/Core/Salsa20.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  namespace ParagonIE\Sodium\Core;
3
 
4
- class SipHash extends \ParagonIE_Sodium_Core_Salsa20
5
  {
6
 
7
- }
1
  <?php
2
  namespace ParagonIE\Sodium\Core;
3
 
4
+ class Salsa20 extends \ParagonIE_Sodium_Core_Salsa20
5
  {
6
 
7
+ }
vendor/paragonie/sodium_compat/namespaced/Core/Xsalsa20.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  namespace ParagonIE\Sodium\Core;
3
 
4
- class Xsalsa20 extends \ParagonIE_Sodium_Core_Xsalsa20
5
  {
6
 
7
  }
1
  <?php
2
  namespace ParagonIE\Sodium\Core;
3
 
4
+ class Xsalsa20 extends \ParagonIE_Sodium_Core_XSalsa20
5
  {
6
 
7
  }
vendor/paragonie/sodium_compat/phpstan.neon.dist ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ parameters:
2
+ level: max
3
+ paths:
4
+ - %currentWorkingDirectory%/src/
5
+ - %currentWorkingDirectory%/lib/
6
+ - %currentWorkingDirectory%/namespaced/
7
+ # excludes_analyse:
8
+ ignoreErrors:
9
+ # sodium_crypto_pwhash is a built-in function
10
+ - '/^Default value of the parameter #6 \$algo \(null\) of function sodium_crypto_pwhash\(\) is incompatible with type int\.$/'
11
+ # PHPStan issue #2124
12
+ - '#^Function sodium_crypto_scalarmult_base invoked with 1 parameter, 2 required\.$#'
13
+ # On PHP >=7.2 there is HashContext
14
+ - '/^Parameter #1 \$context of function hash_final expects HashContext, resource given\.$/'
15
+ # People call generichash() with all kinds of rubish
16
+ -
17
+ message: '#^Else branch is unreachable because previous condition is always true\.$#'
18
+ path: %currentWorkingDirectory%/src/File.php
vendor/paragonie/sodium_compat/src/Compat.php CHANGED
@@ -144,9 +144,9 @@ class ParagonIE_Sodium_Compat
144
  *
145
  * @param string $left The left operand; must be a string
146
  * @param string $right The right operand; must be a string
147
- * @return int < 0 if the left operand is less than the right
148
- * = 0 if both strings are equal
149
- * > 0 if the right operand is less than the left
150
  * @throws SodiumException
151
  * @throws TypeError
152
  * @psalm-suppress MixedArgument
@@ -675,7 +675,7 @@ class ParagonIE_Sodium_Compat
675
  * @param string $key Encryption key
676
  * @param bool $dontFallback Don't fallback to ext/sodium
677
  *
678
- * @return string The original plaintext message
679
  * @throws SodiumException
680
  * @throws TypeError
681
  * @psalm-suppress MixedArgument
@@ -1303,12 +1303,13 @@ class ParagonIE_Sodium_Compat
1303
  /**
1304
  * Get the final BLAKE2b hash output for a given context.
1305
  *
1306
- * @param string &$ctx BLAKE2 hashing context. Generated by crypto_generichash_init().
1307
- * @param int $length Hash output size.
1308
- * @return string Final BLAKE2b hash.
1309
  * @throws SodiumException
1310
  * @throws TypeError
1311
  * @psalm-suppress MixedArgument
 
1312
  */
1313
  public static function crypto_generichash_final(&$ctx, $length = self::CRYPTO_GENERICHASH_BYTES)
1314
  {
@@ -1381,13 +1382,15 @@ class ParagonIE_Sodium_Compat
1381
  /**
1382
  * Update a BLAKE2b hashing context with additional data.
1383
  *
1384
- * @param string &$ctx BLAKE2 hashing context. Generated by crypto_generichash_init().
1385
- * $ctx is passed by reference and gets updated in-place.
 
1386
  * @param string $message The message to append to the existing hash state.
1387
  * @return void
1388
  * @throws SodiumException
1389
  * @throws TypeError
1390
  * @psalm-suppress MixedArgument
 
1391
  */
1392
  public static function crypto_generichash_update(&$ctx, $message)
1393
  {
@@ -2634,6 +2637,7 @@ class ParagonIE_Sodium_Compat
2634
  * native library for that.
2635
  *
2636
  * @param string|null $var
 
2637
  *
2638
  * @return void
2639
  * @throws SodiumException (Unless libsodium is installed)
@@ -2646,6 +2650,7 @@ class ParagonIE_Sodium_Compat
2646
  ParagonIE_Sodium_Core_Util::declareScalarType($var, 'string', 1);
2647
 
2648
  if (self::useNewSodiumAPI()) {
 
2649
  sodium_memzero($var);
2650
  return;
2651
  }
@@ -2749,6 +2754,42 @@ class ParagonIE_Sodium_Compat
2749
  return random_int(0, 65535);
2750
  }
2751
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2752
  /**
2753
  * This emulates libsodium's version_string() function, except ours is
2754
  * prefixed with 'polyfill-'.
144
  *
145
  * @param string $left The left operand; must be a string
146
  * @param string $right The right operand; must be a string
147
+ * @return int If < 0 if the left operand is less than the right
148
+ * If = 0 if both strings are equal
149
+ * If > 0 if the right operand is less than the left
150
  * @throws SodiumException
151
  * @throws TypeError
152
  * @psalm-suppress MixedArgument
675
  * @param string $key Encryption key
676
  * @param bool $dontFallback Don't fallback to ext/sodium
677
  *
678
+ * @return string|bool The original plaintext message
679
  * @throws SodiumException
680
  * @throws TypeError
681
  * @psalm-suppress MixedArgument
1303
  /**
1304
  * Get the final BLAKE2b hash output for a given context.
1305
  *
1306
+ * @param string $ctx BLAKE2 hashing context. Generated by crypto_generichash_init().
1307
+ * @param int $length Hash output size.
1308
+ * @return string Final BLAKE2b hash.
1309
  * @throws SodiumException
1310
  * @throws TypeError
1311
  * @psalm-suppress MixedArgument
1312
+ * @psalm-suppress ReferenceConstraintViolation
1313
  */
1314
  public static function crypto_generichash_final(&$ctx, $length = self::CRYPTO_GENERICHASH_BYTES)
1315
  {
1382
  /**
1383
  * Update a BLAKE2b hashing context with additional data.
1384
  *
1385
+ * @param string $ctx BLAKE2 hashing context. Generated by crypto_generichash_init().
1386
+ * $ctx is passed by reference and gets updated in-place.
1387
+ * @param-out string $ctx
1388
  * @param string $message The message to append to the existing hash state.
1389
  * @return void
1390
  * @throws SodiumException
1391
  * @throws TypeError
1392
  * @psalm-suppress MixedArgument
1393
+ * @psalm-suppress ReferenceConstraintViolation
1394
  */
1395
  public static function crypto_generichash_update(&$ctx, $message)
1396
  {
2637
  * native library for that.
2638
  *
2639
  * @param string|null $var
2640
+ * @param-out string|null $var
2641
  *
2642
  * @return void
2643
  * @throws SodiumException (Unless libsodium is installed)
2650
  ParagonIE_Sodium_Core_Util::declareScalarType($var, 'string', 1);
2651
 
2652
  if (self::useNewSodiumAPI()) {
2653
+ /** @psalm-suppress MixedArgument */
2654
  sodium_memzero($var);
2655
  return;
2656
  }
2754
  return random_int(0, 65535);
2755
  }
2756
 
2757
+ /**
2758
+ * Runtime testing method for 32-bit platforms.
2759
+ *
2760
+ * Usage: If runtime_speed_test() returns FALSE, then our 32-bit
2761
+ * implementation is to slow to use safely without risking timeouts.
2762
+ * If this happens, install sodium from PECL to get acceptable
2763
+ * performance.
2764
+ *
2765
+ * @param int $iterations Number of multiplications to attempt
2766
+ * @param int $maxTimeout Milliseconds
2767
+ * @return bool TRUE if we're fast enough, FALSE is not
2768
+ * @throws SodiumException
2769
+ */
2770
+ public static function runtime_speed_test($iterations, $maxTimeout)
2771
+ {
2772
+ if (self::polyfill_is_fast()) {
2773
+ return true;
2774
+ }
2775
+ /** @var float $end */
2776
+ $end = 0.0;
2777
+ /** @var float $start */
2778
+ $start = microtime(true);
2779
+ /** @var ParagonIE_Sodium_Core32_Int64 $a */
2780
+ $a = ParagonIE_Sodium_Core32_Int64::fromInt(random_int(3, 1 << 16));
2781
+ for ($i = 0; $i < $iterations; ++$i) {
2782
+ /** @var ParagonIE_Sodium_Core32_Int64 $b */
2783
+ $b = ParagonIE_Sodium_Core32_Int64::fromInt(random_int(3, 1 << 16));
2784
+ $a->mulInt64($b);
2785
+ }
2786
+ /** @var float $end */
2787
+ $end = microtime(true);
2788
+ /** @var int $diff */
2789
+ $diff = (int) ceil(($end - $start) * 1000);
2790
+ return $diff < $maxTimeout;
2791
+ }
2792
+
2793
  /**
2794
  * This emulates libsodium's version_string() function, except ours is
2795
  * prefixed with 'polyfill-'.
vendor/paragonie/sodium_compat/src/Core/BLAKE2b.php CHANGED
@@ -256,6 +256,7 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
256
  if (++$i > $maxLength) {
257
  return;
258
  }
 
259
  $u[$uIdx] >>= 8;
260
  }
261
  }
@@ -642,7 +643,7 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
642
  /**
643
  * @internal You should not use this directly from another application
644
  *
645
- * @param SplFixedArray[SplFixedArray] $ctx
646
  * @return string
647
  * @throws TypeError
648
  * @psalm-suppress MixedArgument
256
  if (++$i > $maxLength) {
257
  return;
258
  }
259
+ /** @psalm-suppress MixedOperand */
260
  $u[$uIdx] >>= 8;
261
  }
262
  }
643
  /**
644
  * @internal You should not use this directly from another application
645
  *
646
+ * @param SplFixedArray $ctx
647
  * @return string
648
  * @throws TypeError
649
  * @psalm-suppress MixedArgument
vendor/paragonie/sodium_compat/src/Core/ChaCha20/Ctx.php CHANGED
@@ -83,9 +83,8 @@ class ParagonIE_Sodium_Core_ChaCha20_Ctx extends ParagonIE_Sodium_Core_Util impl
83
  /**
84
  * @internal You should not use this directly from another application
85
  *
86
- * @param mixed $offset
87
  * @return bool
88
- * @psalm-suppress MixedArrayOffset
89
  */
90
  public function offsetExists($offset)
91
  {
@@ -95,7 +94,7 @@ class ParagonIE_Sodium_Core_ChaCha20_Ctx extends ParagonIE_Sodium_Core_Util impl
95
  /**
96
  * @internal You should not use this directly from another application
97
  *
98
- * @param mixed $offset
99
  * @return void
100
  * @psalm-suppress MixedArrayOffset
101
  */
@@ -107,7 +106,7 @@ class ParagonIE_Sodium_Core_ChaCha20_Ctx extends ParagonIE_Sodium_Core_Util impl
107
  /**
108
  * @internal You should not use this directly from another application
109
  *
110
- * @param mixed $offset
111
  * @return mixed|null
112
  * @psalm-suppress MixedArrayOffset
113
  */
83
  /**
84
  * @internal You should not use this directly from another application
85
  *
86
+ * @param int $offset
87
  * @return bool
 
88
  */
89
  public function offsetExists($offset)
90
  {
94
  /**
95
  * @internal You should not use this directly from another application
96
  *
97
+ * @param int $offset
98
  * @return void
99
  * @psalm-suppress MixedArrayOffset
100
  */
106
  /**
107
  * @internal You should not use this directly from another application
108
  *
109
+ * @param int $offset
110
  * @return mixed|null
111
  * @psalm-suppress MixedArrayOffset
112
  */
vendor/paragonie/sodium_compat/src/Core/Curve25519/Fe.php CHANGED
@@ -12,7 +12,7 @@ if (class_exists('ParagonIE_Sodium_Core_Curve25519_Fe', false)) {
12
  class ParagonIE_Sodium_Core_Curve25519_Fe implements ArrayAccess
13
  {
14
  /**
15
- * @var array
16
  */
17
  protected $container = array();
18
 
@@ -24,7 +24,7 @@ class ParagonIE_Sodium_Core_Curve25519_Fe implements ArrayAccess
24
  /**
25
  * @internal You should not use this directly from another application
26
  *
27
- * @param array $array
28
  * @param bool $save_indexes
29
  * @return self
30
  */
@@ -37,6 +37,7 @@ class ParagonIE_Sodium_Core_Curve25519_Fe implements ArrayAccess
37
  $keys = range(0, $count - 1);
38
  }
39
  $array = array_values($array);
 
40
 
41
  $obj = new ParagonIE_Sodium_Core_Curve25519_Fe();
42
  if ($save_indexes) {
@@ -54,8 +55,8 @@ class ParagonIE_Sodium_Core_Curve25519_Fe implements ArrayAccess
54
  /**
55
  * @internal You should not use this directly from another application
56
  *
57
- * @param mixed $offset
58
- * @param mixed $value
59
  * @return void
60
  * @psalm-suppress MixedArrayOffset
61
  */
@@ -74,7 +75,7 @@ class ParagonIE_Sodium_Core_Curve25519_Fe implements ArrayAccess
74
  /**
75
  * @internal You should not use this directly from another application
76
  *
77
- * @param mixed $offset
78
  * @return bool
79
  * @psalm-suppress MixedArrayOffset
80
  */
@@ -86,7 +87,7 @@ class ParagonIE_Sodium_Core_Curve25519_Fe implements ArrayAccess
86
  /**
87
  * @internal You should not use this directly from another application
88
  *
89
- * @param mixed $offset
90
  * @return void
91
  * @psalm-suppress MixedArrayOffset
92
  */
@@ -98,15 +99,16 @@ class ParagonIE_Sodium_Core_Curve25519_Fe implements ArrayAccess
98
  /**
99
  * @internal You should not use this directly from another application
100
  *
101
- * @param mixed $offset
102
- * @return mixed|null
103
  * @psalm-suppress MixedArrayOffset
104
  */
105
  public function offsetGet($offset)
106
  {
107
- return isset($this->container[$offset])
108
- ? $this->container[$offset]
109
- : null;
 
110
  }
111
 
112
  /**
12
  class ParagonIE_Sodium_Core_Curve25519_Fe implements ArrayAccess
13
  {
14
  /**
15
+ * @var array<int, int>
16
  */
17
  protected $container = array();
18
 
24
  /**
25
  * @internal You should not use this directly from another application
26
  *
27
+ * @param array<int, int> $array
28
  * @param bool $save_indexes
29
  * @return self
30
  */
37
  $keys = range(0, $count - 1);
38
  }
39
  $array = array_values($array);
40
+ /** @var array<int, int> $keys */
41
 
42
  $obj = new ParagonIE_Sodium_Core_Curve25519_Fe();
43
  if ($save_indexes) {
55
  /**
56
  * @internal You should not use this directly from another application
57
  *
58
+ * @param int|null $offset
59
+ * @param int $value
60
  * @return void
61
  * @psalm-suppress MixedArrayOffset
62
  */
75
  /**
76
  * @internal You should not use this directly from another application
77
  *
78
+ * @param int $offset
79
  * @return bool
80
  * @psalm-suppress MixedArrayOffset
81
  */
87
  /**
88
  * @internal You should not use this directly from another application
89
  *
90
+ * @param int $offset
91
  * @return void
92
  * @psalm-suppress MixedArrayOffset
93
  */
99
  /**
100
  * @internal You should not use this directly from another application
101
  *
102
+ * @param int $offset
103
+ * @return int
104
  * @psalm-suppress MixedArrayOffset
105
  */
106
  public function offsetGet($offset)
107
  {
108
+ if (!isset($this->container[$offset])) {
109
+ $this->container[$offset] = 0;
110
+ }
111
+ return (int) ($this->container[$offset]);
112
  }
113
 
114
  /**
vendor/paragonie/sodium_compat/src/Core/Util.php CHANGED
@@ -817,7 +817,7 @@ abstract class ParagonIE_Sodium_Core_Util
817
  } else {
818
  $sub = (string) substr($str, $start, $length);
819
  }
820
- if (isset($sub)) {
821
  return $sub;
822
  }
823
  return '';
817
  } else {
818
  $sub = (string) substr($str, $start, $length);
819
  }
820
+ if ($sub !== '') {
821
  return $sub;
822
  }
823
  return '';
vendor/paragonie/sodium_compat/src/Core32/BLAKE2b.php CHANGED
@@ -574,7 +574,7 @@ abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Uti
574
  /**
575
  * @internal You should not use this directly from another application
576
  *
577
- * @param SplFixedArray[SplFixedArray] $ctx
578
  * @return string
579
  * @throws TypeError
580
  * @psalm-suppress MixedArgument
574
  /**
575
  * @internal You should not use this directly from another application
576
  *
577
+ * @param SplFixedArray $ctx
578
  * @return string
579
  * @throws TypeError
580
  * @psalm-suppress MixedArgument
vendor/paragonie/sodium_compat/src/Core32/ChaCha20/Ctx.php CHANGED
@@ -89,7 +89,7 @@ class ParagonIE_Sodium_Core32_ChaCha20_Ctx extends ParagonIE_Sodium_Core32_Util
89
  /**
90
  * @internal You should not use this directly from another application
91
  *
92
- * @param mixed $offset
93
  * @return bool
94
  * @psalm-suppress MixedArrayOffset
95
  */
@@ -101,7 +101,7 @@ class ParagonIE_Sodium_Core32_ChaCha20_Ctx extends ParagonIE_Sodium_Core32_Util
101
  /**
102
  * @internal You should not use this directly from another application
103
  *
104
- * @param mixed $offset
105
  * @return void
106
  * @psalm-suppress MixedArrayOffset
107
  */
@@ -113,7 +113,7 @@ class ParagonIE_Sodium_Core32_ChaCha20_Ctx extends ParagonIE_Sodium_Core32_Util
113
  /**
114
  * @internal You should not use this directly from another application
115
  *
116
- * @param mixed $offset
117
  * @return mixed|null
118
  * @psalm-suppress MixedArrayOffset
119
  */
89
  /**
90
  * @internal You should not use this directly from another application
91
  *
92
+ * @param int $offset
93
  * @return bool
94
  * @psalm-suppress MixedArrayOffset
95
  */
101
  /**
102
  * @internal You should not use this directly from another application
103
  *
104
+ * @param int $offset
105
  * @return void
106
  * @psalm-suppress MixedArrayOffset
107
  */
113
  /**
114
  * @internal You should not use this directly from another application
115
  *
116
+ * @param int $offset
117
  * @return mixed|null
118
  * @psalm-suppress MixedArrayOffset
119
  */
vendor/paragonie/sodium_compat/src/Core32/Int32.php CHANGED
@@ -150,6 +150,136 @@ class ParagonIE_Sodium_Core32_Int32
150
  );
151
  }
152
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  /**
154
  * @param int $int
155
  * @param int $size
@@ -161,6 +291,9 @@ class ParagonIE_Sodium_Core32_Int32
161
  {
162
  ParagonIE_Sodium_Core32_Util::declareScalarType($int, 'int', 1);
163
  ParagonIE_Sodium_Core32_Util::declareScalarType($size, 'int', 2);
 
 
 
164
  /** @var int $int */
165
  $int = (int) $int;
166
  /** @var int $size */
@@ -218,6 +351,9 @@ class ParagonIE_Sodium_Core32_Int32
218
  public function mulInt32(ParagonIE_Sodium_Core32_Int32 $int, $size = 0)
219
  {
220
  ParagonIE_Sodium_Core32_Util::declareScalarType($size, 'int', 2);
 
 
 
221
  if (!$size) {
222
  $size = 31;
223
  }
@@ -491,7 +627,7 @@ class ParagonIE_Sodium_Core32_Int32
491
  /** @var int $c */
492
  return $this->shiftLeft(-$c);
493
  } else {
494
- if (is_null($c)) {
495
  throw new TypeError();
496
  }
497
  /** @var int $c */
150
  );
151
  }
152
 
153
+ /**
154
+ * @param array<int, int> $a
155
+ * @param array<int, int> $b
156
+ * @param int $baseLog2
157
+ * @return array<int, int>
158
+ */
159
+ public function multiplyLong(array $a, array $b, $baseLog2 = 16)
160
+ {
161
+ $a_l = count($a);
162
+ $b_l = count($b);
163
+ /** @var array<int, int> $r */
164
+ $r = array_fill(0, $a_l + $b_l + 1, 0);
165
+ $base = 1 << $baseLog2;
166
+ for ($i = 0; $i < $a_l; ++$i) {
167
+ $a_i = $a[$i];
168
+ for ($j = 0; $j < $a_l; ++$j) {
169
+ $b_j = $b[$j];
170
+ $product = ($a_i * $b_j) + $r[$i + $j];
171
+ $carry = ($product >> $baseLog2 & 0xffff);
172
+ $r[$i + $j] = ($product - (int) ($carry * $base)) & 0xffff;
173
+ $r[$i + $j + 1] += $carry;
174
+ }
175
+ }
176
+ return array_slice($r, 0, 5);
177
+ }
178
+
179
+ /**
180
+ * @param int $int
181
+ * @return ParagonIE_Sodium_Core32_Int32
182
+ */
183
+ public function mulIntFast($int)
184
+ {
185
+ // Handle negative numbers
186
+ $aNeg = ($this->limbs[0] >> 15) & 1;
187
+ $bNeg = ($int >> 31) & 1;
188
+ $a = array_reverse($this->limbs);
189
+ $b = array(
190
+ $int & 0xffff,
191
+ ($int >> 16) & 0xffff
192
+ );
193
+ if ($aNeg) {
194
+ for ($i = 0; $i < 2; ++$i) {
195
+ $a[$i] = ($a[$i] ^ 0xffff) & 0xffff;
196
+ }
197
+ ++$a[0];
198
+ }
199
+ if ($bNeg) {
200
+ for ($i = 0; $i < 2; ++$i) {
201
+ $b[$i] = ($b[$i] ^ 0xffff) & 0xffff;
202
+ }
203
+ ++$b[0];
204
+ }
205
+ // Multiply
206
+ $res = $this->multiplyLong($a, $b);
207
+
208
+ // Re-apply negation to results
209
+ if ($aNeg !== $bNeg) {
210
+ for ($i = 0; $i < 2; ++$i) {
211
+ $res[$i] = (0xffff ^ $res[$i]) & 0xffff;
212
+ }
213
+ // Handle integer overflow
214
+ $c = 1;
215
+ for ($i = 0; $i < 2; ++$i) {
216
+ $res[$i] += $c;
217
+ $c = $res[$i] >> 16;
218
+ $res[$i] &= 0xffff;
219
+ }
220
+ }
221
+
222
+ // Return our values
223
+ $return = new ParagonIE_Sodium_Core32_Int32();
224
+ $return->limbs = array(
225
+ $res[1] & 0xffff,
226
+ $res[0] & 0xffff
227
+ );
228
+ if (count($res) > 2) {
229
+ $return->overflow = $res[2] & 0xffff;
230
+ }
231
+ $return->unsignedInt = $this->unsignedInt;
232
+ return $return;
233
+ }
234
+
235
+ /**
236
+ * @param ParagonIE_Sodium_Core32_Int32 $right
237
+ * @return ParagonIE_Sodium_Core32_Int32
238
+ */
239
+ public function mulInt32Fast(ParagonIE_Sodium_Core32_Int32 $right)
240
+ {
241
+ $aNeg = ($this->limbs[0] >> 15) & 1;
242
+ $bNeg = ($right->limbs[0] >> 15) & 1;
243
+
244
+ $a = array_reverse($this->limbs);
245
+ $b = array_reverse($right->limbs);
246
+ if ($aNeg) {
247
+ for ($i = 0; $i < 2; ++$i) {
248
+ $a[$i] = ($a[$i] ^ 0xffff) & 0xffff;
249
+ }
250
+ ++$a[0];
251
+ }
252
+ if ($bNeg) {
253
+ for ($i = 0; $i < 2; ++$i) {
254
+ $b[$i] = ($b[$i] ^ 0xffff) & 0xffff;
255
+ }
256
+ ++$b[0];
257
+ }
258
+ $res = $this->multiplyLong($a, $b);
259
+ if ($aNeg !== $bNeg) {
260
+ if ($aNeg !== $bNeg) {
261
+ for ($i = 0; $i < 2; ++$i) {
262
+ $res[$i] = ($res[$i] ^ 0xffff) & 0xffff;
263
+ }
264
+ $c = 1;
265
+ for ($i = 0; $i < 2; ++$i) {
266
+ $res[$i] += $c;
267
+ $c = $res[$i] >> 16;
268
+ $res[$i] &= 0xffff;
269
+ }
270
+ }
271
+ }
272
+ $return = new ParagonIE_Sodium_Core32_Int32();
273
+ $return->limbs = array(
274
+ $res[1] & 0xffff,
275
+ $res[0] & 0xffff
276
+ );
277
+ if (count($res) > 2) {
278
+ $return->overflow = $res[2];
279
+ }
280
+ return $return;
281
+ }
282
+
283
  /**
284
  * @param int $int
285
  * @param int $size
291
  {
292
  ParagonIE_Sodium_Core32_Util::declareScalarType($int, 'int', 1);
293
  ParagonIE_Sodium_Core32_Util::declareScalarType($size, 'int', 2);
294
+ if (ParagonIE_Sodium_Compat::$fastMult) {
295
+ return $this->mulIntFast((int) $int);
296
+ }
297
  /** @var int $int */
298
  $int = (int) $int;
299
  /** @var int $size */
351
  public function mulInt32(ParagonIE_Sodium_Core32_Int32 $int, $size = 0)
352
  {
353
  ParagonIE_Sodium_Core32_Util::declareScalarType($size, 'int', 2);
354
+ if (ParagonIE_Sodium_Compat::$fastMult) {
355
+ return $this->mulInt32Fast($int);
356
+ }
357
  if (!$size) {
358
  $size = 31;
359
  }
627
  /** @var int $c */
628
  return $this->shiftLeft(-$c);
629
  } else {
630
+ if (!is_int($c)) {
631
  throw new TypeError();
632
  }
633
  /** @var int $c */
vendor/paragonie/sodium_compat/src/Core32/Int64.php CHANGED
@@ -205,6 +205,9 @@ class ParagonIE_Sodium_Core32_Int64
205
  */
206
  public function mulInt($int = 0, $size = 0)
207
  {
 
 
 
208
  ParagonIE_Sodium_Core32_Util::declareScalarType($int, 'int', 1);
209
  ParagonIE_Sodium_Core32_Util::declareScalarType($size, 'int', 2);
210
  /** @var int $int */
@@ -268,11 +271,11 @@ class ParagonIE_Sodium_Core32_Int64
268
  $a3 &= 0xffff;
269
 
270
  $int >>= 1;
271
- $return->limbs[0] = $ret0;
272
- $return->limbs[1] = $ret1;
273
- $return->limbs[2] = $ret2;
274
- $return->limbs[3] = $ret3;
275
  }
 
 
 
 
276
  return $return;
277
  }
278
 
@@ -317,6 +320,142 @@ class ParagonIE_Sodium_Core32_Int64
317
  );
318
  }
319
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
320
  /**
321
  * @param ParagonIE_Sodium_Core32_Int64 $int
322
  * @param int $size
@@ -327,6 +466,9 @@ class ParagonIE_Sodium_Core32_Int64
327
  */
328
  public function mulInt64(ParagonIE_Sodium_Core32_Int64 $int, $size = 0)
329
  {
 
 
 
330
  ParagonIE_Sodium_Core32_Util::declareScalarType($size, 'int', 2);
331
  if (!$size) {
332
  $size = 63;
@@ -566,7 +708,7 @@ class ParagonIE_Sodium_Core32_Int64
566
  /** @var int $c */
567
  return $this->shiftRight(-$c);
568
  } else {
569
- if (is_null($c)) {
570
  throw new TypeError();
571
  }
572
  /** @var int $carry */
@@ -591,10 +733,11 @@ class ParagonIE_Sodium_Core32_Int64
591
  public function shiftRight($c = 0)
592
  {
593
  ParagonIE_Sodium_Core32_Util::declareScalarType($c, 'int', 1);
 
 
594
  $return = new ParagonIE_Sodium_Core32_Int64();
595
  $return->unsignedInt = $this->unsignedInt;
596
  $c &= 63;
597
- /** @var int $c */
598
 
599
  $negative = -(($this->limbs[0] >> 15) & 1);
600
  if ($c >= 16) {
205
  */
206
  public function mulInt($int = 0, $size = 0)
207
  {
208
+ if (ParagonIE_Sodium_Compat::$fastMult) {
209
+ return $this->mulIntFast($int);
210
+ }
211
  ParagonIE_Sodium_Core32_Util::declareScalarType($int, 'int', 1);
212
  ParagonIE_Sodium_Core32_Util::declareScalarType($size, 'int', 2);
213
  /** @var int $int */
271
  $a3 &= 0xffff;
272
 
273
  $int >>= 1;
 
 
 
 
274
  }
275
+ $return->limbs[0] = $ret0;
276
+ $return->limbs[1] = $ret1;
277
+ $return->limbs[2] = $ret2;
278
+ $return->limbs[3] = $ret3;
279
  return $return;
280
  }
281
 
320
  );
321
  }
322
 
323
+ /**
324
+ * @param array<int, int> $a
325
+ * @param array<int, int> $b
326
+ * @param int $baseLog2
327
+ * @return array<int, int>
328
+ */
329
+ public function multiplyLong(array $a, array $b, $baseLog2 = 16)
330
+ {
331
+ $a_l = count($a);
332
+ $b_l = count($b);
333
+ /** @var array<int, int> $r */
334
+ $r = array_fill(0, $a_l + $b_l + 1, 0);
335
+ $base = 1 << $baseLog2;
336
+ for ($i = 0; $i < $a_l; ++$i) {
337
+ $a_i = $a[$i];
338
+ for ($j = 0; $j < $a_l; ++$j) {
339
+ $b_j = $b[$j];
340
+ $product = ($a_i * $b_j) + $r[$i + $j];
341
+ $carry = ($product >> $baseLog2 & 0xffff);
342
+ $r[$i + $j] = ($product - (int) ($carry * $base)) & 0xffff;
343
+ $r[$i + $j + 1] += $carry;
344
+ }
345
+ }
346
+ return array_slice($r, 0, 5);
347
+ }
348
+
349
+ /**
350
+ * @param int $int
351
+ * @return ParagonIE_Sodium_Core32_Int64
352
+ */
353
+ public function mulIntFast($int)
354
+ {
355
+ // Handle negative numbers
356
+ $aNeg = ($this->limbs[0] >> 15) & 1;
357
+ $bNeg = ($int >> 31) & 1;
358
+ $a = array_reverse($this->limbs);
359
+ $b = array(
360
+ $int & 0xffff,
361
+ ($int >> 16) & 0xffff,
362
+ -$bNeg & 0xffff,
363
+ -$bNeg & 0xffff
364
+ );
365
+ if ($aNeg) {
366
+ for ($i = 0; $i < 4; ++$i) {
367
+ $a[$i] = ($a[$i] ^ 0xffff) & 0xffff;
368
+ }
369
+ ++$a[0];
370
+ }
371
+ if ($bNeg) {
372
+ for ($i = 0; $i < 4; ++$i) {
373
+ $b[$i] = ($b[$i] ^ 0xffff) & 0xffff;
374
+ }
375
+ ++$b[0];
376
+ }
377
+ // Multiply
378
+ $res = $this->multiplyLong($a, $b);
379
+
380
+ // Re-apply negation to results
381
+ if ($aNeg !== $bNeg) {
382
+ for ($i = 0; $i < 4; ++$i) {
383
+ $res[$i] = (0xffff ^ $res[$i]) & 0xffff;
384
+ }
385
+ // Handle integer overflow
386
+ $c = 1;
387
+ for ($i = 0; $i < 4; ++$i) {
388
+ $res[$i] += $c;
389
+ $c = $res[$i] >> 16;
390
+ $res[$i] &= 0xffff;
391
+ }
392
+ }
393
+
394
+ // Return our values
395
+ $return = new ParagonIE_Sodium_Core32_Int64();
396
+ $return->limbs = array(
397
+ $res[3] & 0xffff,
398
+ $res[2] & 0xffff,
399
+ $res[1] & 0xffff,
400
+ $res[0] & 0xffff
401
+ );
402
+ if (count($res) > 4) {
403
+ $return->overflow = $res[4] & 0xffff;
404
+ }
405
+ $return->unsignedInt = $this->unsignedInt;
406
+ return $return;
407
+ }
408
+
409
+ /**
410
+ * @param ParagonIE_Sodium_Core32_Int64 $right
411
+ * @return ParagonIE_Sodium_Core32_Int64
412
+ */
413
+ public function mulInt64Fast(ParagonIE_Sodium_Core32_Int64 $right)
414
+ {
415
+ $aNeg = ($this->limbs[0] >> 15) & 1;
416
+ $bNeg = ($right->limbs[0] >> 15) & 1;
417
+
418
+ $a = array_reverse($this->limbs);
419
+ $b = array_reverse($right->limbs);
420
+ if ($aNeg) {
421
+ for ($i = 0; $i < 4; ++$i) {
422
+ $a[$i] = ($a[$i] ^ 0xffff) & 0xffff;
423
+ }
424
+ ++$a[0];
425
+ }
426
+ if ($bNeg) {
427
+ for ($i = 0; $i < 4; ++$i) {
428
+ $b[$i] = ($b[$i] ^ 0xffff) & 0xffff;
429
+ }
430
+ ++$b[0];
431
+ }
432
+ $res = $this->multiplyLong($a, $b);
433
+ if ($aNeg !== $bNeg) {
434
+ if ($aNeg !== $bNeg) {
435
+ for ($i = 0; $i < 4; ++$i) {
436
+ $res[$i] = ($res[$i] ^ 0xffff) & 0xffff;
437
+ }
438
+ $c = 1;
439
+ for ($i = 0; $i < 4; ++$i) {
440
+ $res[$i] += $c;
441
+ $c = $res[$i] >> 16;
442
+ $res[$i] &= 0xffff;
443
+ }
444
+ }
445
+ }
446
+ $return = new ParagonIE_Sodium_Core32_Int64();
447
+ $return->limbs = array(
448
+ $res[3] & 0xffff,
449
+ $res[2] & 0xffff,
450
+ $res[1] & 0xffff,
451
+ $res[0] & 0xffff
452
+ );
453
+ if (count($res) > 4) {
454
+ $return->overflow = $res[4];
455
+ }
456
+ return $return;
457
+ }
458
+
459
  /**
460
  * @param ParagonIE_Sodium_Core32_Int64 $int
461
  * @param int $size
466
  */
467
  public function mulInt64(ParagonIE_Sodium_Core32_Int64 $int, $size = 0)
468
  {
469
+ if (ParagonIE_Sodium_Compat::$fastMult) {
470
+ return $this->mulInt64Fast($int);
471
+ }
472
  ParagonIE_Sodium_Core32_Util::declareScalarType($size, 'int', 2);
473
  if (!$size) {
474
  $size = 63;
708
  /** @var int $c */
709
  return $this->shiftRight(-$c);
710
  } else {
711
+ if (!is_int($c)) {
712
  throw new TypeError();
713
  }
714
  /** @var int $carry */
733
  public function shiftRight($c = 0)
734
  {
735
  ParagonIE_Sodium_Core32_Util::declareScalarType($c, 'int', 1);
736
+ $c = (int) $c;
737
+ /** @var int $c */
738
  $return = new ParagonIE_Sodium_Core32_Int64();
739
  $return->unsignedInt = $this->unsignedInt;
740
  $c &= 63;
 
741
 
742
  $negative = -(($this->limbs[0] >> 15) & 1);
743
  if ($c >= 16) {
vendor/paragonie/sodium_compat/src/Core32/X25519.php CHANGED
@@ -102,58 +102,48 @@ abstract class ParagonIE_Sodium_Core32_X25519 extends ParagonIE_Sodium_Core32_Cu
102
  */
103
  public static function fe_mul121666(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
104
  {
105
- /** @var array<int, ParagonIE_Sodium_Core32_Int32> $h */
106
  $h = array();
107
  for ($i = 0; $i < 10; ++$i) {
108
  $h[$i] = $f[$i]->toInt64()->mulInt(121666, 17);
109
  }
110
 
111
- /** @var ParagonIE_Sodium_Core32_Int32 $carry9 */
112
  $carry9 = $h[9]->addInt(1 << 24)->shiftRight(25);
113
  $h[0] = $h[0]->addInt64($carry9->mulInt(19, 5));
114
  $h[9] = $h[9]->subInt64($carry9->shiftLeft(25));
115
 
116
- /** @var ParagonIE_Sodium_Core32_Int32 $carry1 */
117
  $carry1 = $h[1]->addInt(1 << 24)->shiftRight(25);
118
  $h[2] = $h[2]->addInt64($carry1);
119
  $h[1] = $h[1]->subInt64($carry1->shiftLeft(25));
120
 
121
- /** @var ParagonIE_Sodium_Core32_Int32 $carry3 */
122
  $carry3 = $h[3]->addInt(1 << 24)->shiftRight(25);
123
  $h[4] = $h[4]->addInt64($carry3);
124
  $h[3] = $h[3]->subInt64($carry3->shiftLeft(25));
125
 
126
- /** @var ParagonIE_Sodium_Core32_Int32 $carry5 */
127
  $carry5 = $h[5]->addInt(1 << 24)->shiftRight(25);
128
  $h[6] = $h[6]->addInt64($carry5);
129
  $h[5] = $h[5]->subInt64($carry5->shiftLeft(25));
130
 
131
- /** @var ParagonIE_Sodium_Core32_Int32 $carry7 */
132
  $carry7 = $h[7]->addInt(1 << 24)->shiftRight(25);
133
  $h[8] = $h[8]->addInt64($carry7);
134
  $h[7] = $h[7]->subInt64($carry7->shiftLeft(25));
135
 
136
- /** @var ParagonIE_Sodium_Core32_Int32 $carry0 */
137
  $carry0 = $h[0]->addInt(1 << 25)->shiftRight(26);
138
  $h[1] = $h[1]->addInt64($carry0);
139
  $h[0] = $h[0]->subInt64($carry0->shiftLeft(26));
140
 
141
- /** @var ParagonIE_Sodium_Core32_Int32 $carry2 */
142
  $carry2 = $h[2]->addInt(1 << 25)->shiftRight(26);
143
  $h[3] = $h[3]->addInt64($carry2);
144
  $h[2] = $h[2]->subInt64($carry2->shiftLeft(26));
145
 
146
- /** @var ParagonIE_Sodium_Core32_Int32 $carry4 */
147
  $carry4 = $h[4]->addInt(1 << 25)->shiftRight(26);
148
  $h[5] = $h[5]->addInt64($carry4);
149
  $h[4] = $h[4]->subInt64($carry4->shiftLeft(26));
150
 
151
- /** @var ParagonIE_Sodium_Core32_Int32 $carry6 */
152
  $carry6 = $h[6]->addInt(1 << 25)->shiftRight(26);
153
  $h[7] = $h[7]->addInt64($carry6);
154
  $h[6] = $h[6]->subInt64($carry6->shiftLeft(26));
155
 
156
- /** @var ParagonIE_Sodium_Core32_Int32 $carry8 */
157
  $carry8 = $h[8]->addInt(1 << 25)->shiftRight(26);
158
  $h[9] = $h[9]->addInt64($carry8);
159
  $h[8] = $h[8]->subInt64($carry8->shiftLeft(26));
102
  */
103
  public static function fe_mul121666(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
104
  {
105
+ /** @var array<int, ParagonIE_Sodium_Core32_Int64> $h */
106
  $h = array();
107
  for ($i = 0; $i < 10; ++$i) {
108
  $h[$i] = $f[$i]->toInt64()->mulInt(121666, 17);
109
  }
110
 
 
111
  $carry9 = $h[9]->addInt(1 << 24)->shiftRight(25);
112
  $h[0] = $h[0]->addInt64($carry9->mulInt(19, 5));
113
  $h[9] = $h[9]->subInt64($carry9->shiftLeft(25));
114
 
 
115
  $carry1 = $h[1]->addInt(1 << 24)->shiftRight(25);
116
  $h[2] = $h[2]->addInt64($carry1);
117
  $h[1] = $h[1]->subInt64($carry1->shiftLeft(25));
118
 
 
119
  $carry3 = $h[3]->addInt(1 << 24)->shiftRight(25);
120
  $h[4] = $h[4]->addInt64($carry3);
121
  $h[3] = $h[3]->subInt64($carry3->shiftLeft(25));
122
 
 
123
  $carry5 = $h[5]->addInt(1 << 24)->shiftRight(25);
124
  $h[6] = $h[6]->addInt64($carry5);
125
  $h[5] = $h[5]->subInt64($carry5->shiftLeft(25));
126
 
 
127
  $carry7 = $h[7]->addInt(1 << 24)->shiftRight(25);
128
  $h[8] = $h[8]->addInt64($carry7);
129
  $h[7] = $h[7]->subInt64($carry7->shiftLeft(25));
130
 
 
131
  $carry0 = $h[0]->addInt(1 << 25)->shiftRight(26);
132
  $h[1] = $h[1]->addInt64($carry0);
133
  $h[0] = $h[0]->subInt64($carry0->shiftLeft(26));
134
 
 
135
  $carry2 = $h[2]->addInt(1 << 25)->shiftRight(26);
136
  $h[3] = $h[3]->addInt64($carry2);
137
  $h[2] = $h[2]->subInt64($carry2->shiftLeft(26));
138
 
 
139
  $carry4 = $h[4]->addInt(1 << 25)->shiftRight(26);
140
  $h[5] = $h[5]->addInt64($carry4);
141
  $h[4] = $h[4]->subInt64($carry4->shiftLeft(26));
142
 
 
143
  $carry6 = $h[6]->addInt(1 << 25)->shiftRight(26);
144
  $h[7] = $h[7]->addInt64($carry6);
145
  $h[6] = $h[6]->subInt64($carry6->shiftLeft(26));
146
 
 
147
  $carry8 = $h[8]->addInt(1 << 25)->shiftRight(26);
148
  $h[9] = $h[9]->addInt64($carry8);
149
  $h[8] = $h[8]->subInt64($carry8->shiftLeft(26));
vendor/paragonie/sodium_compat/src/File.php CHANGED
@@ -590,7 +590,6 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
590
  $az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
591
  $az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);
592
 
593
- /** @var resource $hs */
594
  $hs = hash_init('sha512');
595
  hash_update($hs, self::substr($az, 32, 32));
596
  /** @var resource $hs */
@@ -610,7 +609,6 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
610
  ParagonIE_Sodium_Core_Ed25519::ge_scalarmult_base($nonce)
611
  );
612
 
613
- /** @var resource $hs */
614
  $hs = hash_init('sha512');
615
  hash_update($hs, self::substr($sig, 0, 32));
616
  hash_update($hs, self::substr($pk, 0, 32));
@@ -719,7 +717,6 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
719
  /** @var ParagonIE_Sodium_Core_Curve25519_Ge_P3 $A */
720
  $A = ParagonIE_Sodium_Core_Ed25519::ge_frombytes_negate_vartime($publicKey);
721
 
722
- /** @var resource $hs */
723
  $hs = hash_init('sha512');
724
  hash_update($hs, self::substr($sig, 0, 32));
725
  hash_update($hs, self::substr($publicKey, 0, 32));
@@ -1079,7 +1076,7 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
1079
  * @param resource|object $hash
1080
  * @param resource $fp
1081
  * @param int $size
1082
- * @return mixed (resource on PHP < 7.2, object on PHP >= 7.2)
1083
  * @throws SodiumException
1084
  * @throws TypeError
1085
  * @psalm-suppress PossiblyInvalidArgument
@@ -1095,12 +1092,12 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
1095
  if (!is_resource($hash)) {
1096
  throw new TypeError('Argument 1 must be a resource, ' . gettype($hash) . ' given.');
1097
  }
1098
-
1099
  } else {
1100
  if (!is_object($hash)) {
1101
  throw new TypeError('Argument 1 must be an object (PHP 7.2+), ' . gettype($hash) . ' given.');
1102
  }
1103
  }
 
1104
  if (!is_resource($fp)) {
1105
  throw new TypeError('Argument 2 must be a resource, ' . gettype($fp) . ' given.');
1106
  }
@@ -1167,7 +1164,6 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
1167
  $az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
1168
  $az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);
1169
 
1170
- /** @var resource $hs */
1171
  $hs = hash_init('sha512');
1172
  hash_update($hs, self::substr($az, 32, 32));
1173
  /** @var resource $hs */
@@ -1187,7 +1183,6 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
1187
  ParagonIE_Sodium_Core32_Ed25519::ge_scalarmult_base($nonce)
1188
  );
1189
 
1190
- /** @var resource $hs */
1191
  $hs = hash_init('sha512');
1192
  hash_update($hs, self::substr($sig, 0, 32));
1193
  hash_update($hs, self::substr($pk, 0, 32));
@@ -1272,7 +1267,6 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
1272
  /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A */
1273
  $A = ParagonIE_Sodium_Core32_Ed25519::ge_frombytes_negate_vartime($publicKey);
1274
 
1275
- /** @var resource $hs */
1276
  $hs = hash_init('sha512');
1277
  hash_update($hs, self::substr($sig, 0, 32));
1278
  hash_update($hs, self::substr($publicKey, 0, 32));
590
  $az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
591
  $az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);
592
 
 
593
  $hs = hash_init('sha512');
594
  hash_update($hs, self::substr($az, 32, 32));
595
  /** @var resource $hs */
609
  ParagonIE_Sodium_Core_Ed25519::ge_scalarmult_base($nonce)
610
  );
611
 
 
612
  $hs = hash_init('sha512');
613
  hash_update($hs, self::substr($sig, 0, 32));
614
  hash_update($hs, self::substr($pk, 0, 32));
717
  /** @var ParagonIE_Sodium_Core_Curve25519_Ge_P3 $A */
718
  $A = ParagonIE_Sodium_Core_Ed25519::ge_frombytes_negate_vartime($publicKey);
719
 
 
720
  $hs = hash_init('sha512');
721
  hash_update($hs, self::substr($sig, 0, 32));
722
  hash_update($hs, self::substr($publicKey, 0, 32));
1076
  * @param resource|object $hash
1077
  * @param resource $fp
1078
  * @param int $size
1079
+ * @return resource|object Resource on PHP < 7.2, HashContext object on PHP >= 7.2
1080
  * @throws SodiumException
1081
  * @throws TypeError
1082
  * @psalm-suppress PossiblyInvalidArgument
1092
  if (!is_resource($hash)) {
1093
  throw new TypeError('Argument 1 must be a resource, ' . gettype($hash) . ' given.');
1094
  }
 
1095
  } else {
1096
  if (!is_object($hash)) {
1097
  throw new TypeError('Argument 1 must be an object (PHP 7.2+), ' . gettype($hash) . ' given.');
1098
  }
1099
  }
1100
+
1101
  if (!is_resource($fp)) {
1102
  throw new TypeError('Argument 2 must be a resource, ' . gettype($fp) . ' given.');
1103
  }
1164
  $az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
1165
  $az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);
1166
 
 
1167
  $hs = hash_init('sha512');
1168
  hash_update($hs, self::substr($az, 32, 32));
1169
  /** @var resource $hs */
1183
  ParagonIE_Sodium_Core32_Ed25519::ge_scalarmult_base($nonce)
1184
  );
1185
 
 
1186
  $hs = hash_init('sha512');
1187
  hash_update($hs, self::substr($sig, 0, 32));
1188
  hash_update($hs, self::substr($pk, 0, 32));
1267
  /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A */
1268
  $A = ParagonIE_Sodium_Core32_Ed25519::ge_frombytes_negate_vartime($publicKey);
1269
 
 
1270
  $hs = hash_init('sha512');
1271
  hash_update($hs, self::substr($sig, 0, 32));
1272
  hash_update($hs, self::substr($publicKey, 0, 32));
wordfence.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Wordfence Security
4
  Plugin URI: http://www.wordfence.com/
5
  Description: Wordfence Security - Anti-virus, Firewall and Malware Scan
6
  Author: Wordfence
7
- Version: 7.3.1
8
  Author URI: http://www.wordfence.com/
9
  Network: true
10
  */
@@ -15,8 +15,8 @@ if(defined('WP_INSTALLING') && WP_INSTALLING){
15
  if (!defined('ABSPATH')) {
16
  exit;
17
  }
18
- define('WORDFENCE_VERSION', '7.3.1');
19
- define('WORDFENCE_BUILD_NUMBER', '1557854560');
20
  define('WORDFENCE_BASENAME', function_exists('plugin_basename') ? plugin_basename(__FILE__) :
21
  basename(dirname(__FILE__)) . '/' . basename(__FILE__));
22
 
4
  Plugin URI: http://www.wordfence.com/
5
  Description: Wordfence Security - Anti-virus, Firewall and Malware Scan
6
  Author: Wordfence
7
+ Version: 7.3.2
8
  Author URI: http://www.wordfence.com/
9
  Network: true
10
  */
15
  if (!defined('ABSPATH')) {
16
  exit;
17
  }
18
+ define('WORDFENCE_VERSION', '7.3.2');
19
+ define('WORDFENCE_BUILD_NUMBER', '1558031354');
20
  define('WORDFENCE_BASENAME', function_exists('plugin_basename') ? plugin_basename(__FILE__) :
21
  basename(dirname(__FILE__)) . '/' . basename(__FILE__));
22