From 249d00b5c6eaf3d64b282e70c4bd2a15c2280b01 Mon Sep 17 00:00:00 2001 From: Paragon Initiative Enterprises Date: Wed, 17 Apr 2024 04:18:35 -0400 Subject: [PATCH] Move PHP 8.4-compat to its own file --- autoload.php | 6 +++ lib/php72compat.php | 90 ------------------------------- lib/php84compat.php | 108 ++++++++++++++++++++++++++++++++++++++ lib/php84compat_const.php | 10 ++++ tests/phpunit-shim.php | 3 +- 5 files changed, 125 insertions(+), 92 deletions(-) create mode 100644 lib/php84compat.php create mode 100644 lib/php84compat_const.php diff --git a/autoload.php b/autoload.php index fd12f87b..bfd9e4a0 100644 --- a/autoload.php +++ b/autoload.php @@ -54,6 +54,9 @@ function sodiumCompatAutoloader($class) // unless PHP >= 5.3.0 require_once dirname(__FILE__) . '/lib/namespaced.php'; require_once dirname(__FILE__) . '/lib/sodium_compat.php'; + if (!defined('SODIUM_CRYPTO_AEAD_AEGIS128L_KEYBYTES')) { + require_once dirname(__FILE__) . '/lib/php84compat_const.php'; + } } else { require_once dirname(__FILE__) . '/src/PHP52/SplFixedArray.php'; } @@ -71,5 +74,8 @@ function sodiumCompatAutoloader($class) // Older versions of {PHP, ext/sodium} will not define these require_once(dirname(__FILE__) . '/lib/php72compat.php'); } +if (PHP_VERSION_ID < 80400 || !extension_loaded('sodium')) { + require_once dirname(__FILE__) . '/lib/php84compat.php'; +} require_once(dirname(__FILE__) . '/lib/stream-xchacha20.php'); require_once(dirname(__FILE__) . '/lib/ristretto255.php'); diff --git a/lib/php72compat.php b/lib/php72compat.php index ee81d4e7..f813e563 100644 --- a/lib/php72compat.php +++ b/lib/php72compat.php @@ -14,14 +14,6 @@ 'BASE64_VARIANT_ORIGINAL_NO_PADDING', 'BASE64_VARIANT_URLSAFE', 'BASE64_VARIANT_URLSAFE_NO_PADDING', - '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', 'CRYPTO_AEAD_AES256GCM_KEYBYTES', 'CRYPTO_AEAD_AES256GCM_NSECBYTES', 'CRYPTO_AEAD_AES256GCM_NPUBBYTES', @@ -184,88 +176,6 @@ function sodium_compare($string1, $string2) return ParagonIE_Sodium_Compat::compare($string1, $string2); } } -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, $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($message, $additional_data, $nonce, $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, $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($message, $additional_data, $nonce, $key) - { - return ParagonIE_Sodium_Compat::crypto_aead_aegis256_encrypt( - $message, - $additional_data, - $nonce, - $key - ); - } -} if (!is_callable('sodium_crypto_aead_aes256gcm_decrypt')) { /** * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt() diff --git a/lib/php84compat.php b/lib/php84compat.php new file mode 100644 index 00000000..d7a317ce --- /dev/null +++ b/lib/php84compat.php @@ -0,0 +1,108 @@ +