<?php
declare(strict_types=1);
namespace ParagonIE\HPKE\Tests\Context;
use ParagonIE\HPKE\Context\Sender;
use ParagonIE\HPKE\HPKE;
use ParagonIE\HPKE\HPKEException;
use ParagonIE\HPKE\Interfaces\SymmetricKeyInterface;
use ParagonIE\HPKE\Tests\ContextTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use SodiumException;
#[CoversClass(Sender::class)]
class SenderTest extends ContextTestCase
{
public static function makeContext(
HPKE $hpke,
SymmetricKeyInterface $key,
string $baseNonce,
int $sequence,
#[\SensitiveParameter] string $exporterSecret,
): Sender {
return new Sender($hpke, $key, $baseNonce, $sequence, $exporterSecret);
}
/**
* @throws HPKEException
* @throws SodiumException
*/
#[DataProvider('sealTests')]
public function testSeal(Sender $sender, array $sequentialOutputs = []): void
{
foreach ($sequentialOutputs as $outputs) {
$pt = sodium_hex2bin($outputs['pt_hex']);
$aad = sodium_hex2bin($outputs['aad_hex']);
$sealed = $sender->seal($pt, $aad);
$this->assertSame($outputs['ct_hex'], sodium_bin2hex($sealed));
// Sequence number should increase implicitly
}
}
}
|