wp/wp-includes/sodium_compat/autoload.php
changeset 18 be944660c56a
parent 16 a86126ab1dd4
child 21 48c4eec2b7e6
--- a/wp/wp-includes/sodium_compat/autoload.php	Tue Dec 15 15:52:01 2020 +0100
+++ b/wp/wp-includes/sodium_compat/autoload.php	Wed Sep 21 18:19:35 2022 +0200
@@ -1,43 +1,52 @@
 <?php
 
-if (!is_callable('sodiumCompatAutoloader')) {
-    /**
-     * Sodium_Compat autoloader.
-     *
-     * @param string $class Class name to be autoloaded.
-     *
-     * @return bool         Stop autoloading?
-     */
-    function sodiumCompatAutoloader($class)
-    {
-        $namespace = 'ParagonIE_Sodium_';
-        // Does the class use the namespace prefix?
-        $len = strlen($namespace);
-        if (strncmp($namespace, $class, $len) !== 0) {
-            // no, move to the next registered autoloader
+if (PHP_VERSION_ID < 70000) {
+    if (!is_callable('sodiumCompatAutoloader')) {
+        /**
+         * Sodium_Compat autoloader.
+         *
+         * @param string $class Class name to be autoloaded.
+         *
+         * @return bool         Stop autoloading?
+         */
+        function sodiumCompatAutoloader($class)
+        {
+            $namespace = 'ParagonIE_Sodium_';
+            // Does the class use the namespace prefix?
+            $len = strlen($namespace);
+            if (strncmp($namespace, $class, $len) !== 0) {
+                // no, move to the next registered autoloader
+                return false;
+            }
+
+            // Get the relative class name
+            $relative_class = substr($class, $len);
+
+            // Replace the namespace prefix with the base directory, replace namespace
+            // separators with directory separators in the relative class name, append
+            // with .php
+            $file = dirname(__FILE__) . '/src/' . str_replace('_', '/', $relative_class) . '.php';
+            // if the file exists, require it
+            if (file_exists($file)) {
+                require_once $file;
+                return true;
+            }
             return false;
         }
 
-        // Get the relative class name
-        $relative_class = substr($class, $len);
-
-        // Replace the namespace prefix with the base directory, replace namespace
-        // separators with directory separators in the relative class name, append
-        // with .php
-        $file = dirname(__FILE__) . '/src/' . str_replace('_', '/', $relative_class) . '.php';
-        // if the file exists, require it
-        if (file_exists($file)) {
-            require_once $file;
-            return true;
-        }
-        return false;
+        // Now that we have an autoloader, let's register it!
+        spl_autoload_register('sodiumCompatAutoloader');
     }
-
-    // Now that we have an autoloader, let's register it!
-    spl_autoload_register('sodiumCompatAutoloader');
+} else {
+    require_once dirname(__FILE__) . '/autoload-php7.php';
 }
 
-require_once dirname(__FILE__) . '/src/SodiumException.php';
+/* Explicitly, always load the Compat class: */
+require_once dirname(__FILE__) . '/src/Compat.php';
+
+if (!class_exists('SodiumException', false)) {
+    require_once dirname(__FILE__) . '/src/SodiumException.php';
+}
 if (PHP_VERSION_ID >= 50300) {
     // Namespaces didn't exist before 5.3.0, so don't even try to use this
     // unless PHP >= 5.3.0
@@ -55,5 +64,9 @@
     } else {
         assert(class_exists('ParagonIE_Sodium_Compat'));
     }
-    require_once (dirname(__FILE__) . '/lib/php72compat.php');
+    require_once(dirname(__FILE__) . '/lib/php72compat.php');
+} elseif (!function_exists('sodium_crypto_stream_xchacha20_xor')) {
+    // Older versions of {PHP, ext/sodium} will not define these
+    require_once(dirname(__FILE__) . '/lib/php72compat.php');
 }
+require_once(dirname(__FILE__) . '/lib/ristretto255.php');