| 
<?phpdeclare(strict_types=1);
 
 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|bool
 * @throws SodiumException
 */
 function sodium_crypto_aead_aegis128l_decrypt(
 string $ciphertext,
 string $additional_data,
 string $nonce,
 #[\SensitiveParameter]
 string $key
 ): string|bool {
 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]
 string $message,
 string $additional_data,
 string $nonce,
 #[\SensitiveParameter]
 string $key
 ): string {
 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|bool
 * @throws SodiumException
 */
 function sodium_crypto_aead_aegis256_decrypt(
 string $ciphertext,
 string $additional_data,
 string $nonce,
 #[\SensitiveParameter]
 string $key
 ): string|bool {
 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]
 string $message,
 string $additional_data,
 string $nonce,
 #[\SensitiveParameter]
 string $key
 ): string {
 return ParagonIE_Sodium_Compat::crypto_aead_aegis256_encrypt(
 $message,
 $additional_data,
 $nonce,
 $key
 );
 }
 }
 
 |