<?php
use PHPUnit\Framework\TestCase;
class PHP84Test extends TestCase
{
/**
* @before
*/
public function before(): void
{
if (PHP_VERSION_ID < 80400 || !extension_loaded('sodium')) {
$this->markTestSkipped('PHP < 8.4.0; skipping PHP 8.4 compatibility test suite.');
}
ParagonIE_Sodium_Compat::$disableFallbackForUnitTests = true;
}
public function testAegis128l(): void
{
$msg = ParagonIE_Sodium_Compat::randombytes_buf(ParagonIE_Sodium_Compat::randombytes_uniform(999) + 1);
$nonce = ParagonIE_Sodium_Compat::randombytes_buf(ParagonIE_Sodium_Compat::CRYPTO_AEAD_AEGIS128L_NPUBBYTES);
$ad = ParagonIE_Sodium_Compat::randombytes_buf(ParagonIE_Sodium_Compat::randombytes_uniform(999) + 1);
$key = ParagonIE_Sodium_Compat::crypto_aead_aegis128l_keygen();
$ciphertext = ParagonIE_Sodium_Compat::crypto_aead_aegis128l_encrypt($msg, $ad, $nonce, $key);
$c2 = sodium_crypto_aead_aegis128l_encrypt($msg, $ad, $nonce, $key);
$this->assertSame($ciphertext, $c2);
$msg2 = ParagonIE_Sodium_Compat::crypto_aead_aegis128l_decrypt($ciphertext, $ad, $nonce, $key);
$msg2b = sodium_crypto_aead_aegis128l_decrypt($c2, $ad, $nonce, $key);
$this->assertSame($msg, $msg2);
$this->assertSame($msg, $msg2b);
}
public function testAegis256(): void
{
$msg = ParagonIE_Sodium_Compat::randombytes_buf(ParagonIE_Sodium_Compat::randombytes_uniform(999) + 1);
$nonce = ParagonIE_Sodium_Compat::randombytes_buf(ParagonIE_Sodium_Compat::CRYPTO_AEAD_AEGIS256_NPUBBYTES);
$ad = ParagonIE_Sodium_Compat::randombytes_buf(ParagonIE_Sodium_Compat::randombytes_uniform(999) + 1);
$key = ParagonIE_Sodium_Compat::crypto_aead_aegis256_keygen();
$ciphertext = ParagonIE_Sodium_Compat::crypto_aead_aegis256_encrypt($msg, $ad, $nonce, $key);
$c2 = sodium_crypto_aead_aegis256_encrypt($msg, $ad, $nonce, $key);
$this->assertSame($ciphertext, $c2);
$msg2 = ParagonIE_Sodium_Compat::crypto_aead_aegis256_decrypt($ciphertext, $ad, $nonce, $key);
$msg2b = sodium_crypto_aead_aegis256_decrypt($c2, $ad, $nonce, $key);
$this->assertSame($msg, $msg2);
$this->assertSame($msg, $msg2b);
}
}
|