PHP Classes

File: autoload.php

Recommend this page to a friend!
  Classes of Scott Arciszewski   PHP Sodium Compat   autoload.php   Download  
File: autoload.php
Role: Auxiliary script
Content type: text/plain
Description: Auxiliary script
Class: PHP Sodium Compat
Cryptographic functions of libsodium in pure PHP
Author: By
Last change: We don't need the old \Sodium\ API.
Update public API
Move PHP 8.4-compat to its own file
Date: 10 days ago
Size: 2,015 bytes
 

Contents

Class file image Download
<?php

spl_autoload_register
(function ($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;
});

/* Explicitly, always load the Compat class: */
if (!class_exists('ParagonIE_Sodium_Compat', false)) {
    require_once
dirname(__FILE__) . '/src/Compat.php';
}

if (!
class_exists('SodiumException', false)) {
    require_once
dirname(__FILE__) . '/src/SodiumException.php';
}

require_once
dirname(__FILE__) . '/lib/namespaced.php';
if (!
defined('SODIUM_CRYPTO_AEAD_AEGIS128L_KEYBYTES')) {
    require_once
dirname(__FILE__) . '/lib/php84compat_const.php';
}

if (!
extension_loaded('sodium')) {
    if (!
defined('SODIUM_CRYPTO_SCALARMULT_BYTES')) {
        require_once
dirname(__FILE__) . '/lib/php72compat_const.php';
    }
   
assert(class_exists('ParagonIE_Sodium_Compat'), 'Possible filesystem/autoloader bug?');
    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');
}
if (
PHP_VERSION_ID < 80400 || !extension_loaded('sodium')) {
    require_once
dirname(__FILE__) . '/lib/php84compat.php';
}
require_once(
dirname(__FILE__) . '/lib/stream-xchacha20.php');
require_once(
dirname(__FILE__) . '/lib/ristretto255.php');