<?php
declare(strict_types=1);
namespace ParagonIE\HPKE\Tests\Context;
use ParagonIE\HPKE\Context\Receiver;
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(Receiver::class)]
class ReceiverTest extends ContextTestCase
{
public static function makeContext(
HPKE $hpke,
SymmetricKeyInterface $key,
string $baseNonce,
int $sequence,
#[\SensitiveParameter] string $exporterSecret,
): Receiver {
return new Receiver($hpke, $key, $baseNonce, $sequence, $exporterSecret);
}
/**
* @throws HPKEException
* @throws SodiumException
*/
#[DataProvider('sealTests')]
public function testReceive(Receiver $receiver, array $sequentialOutputs = []): void
{
foreach ($sequentialOutputs as $outputs) {
$ct = sodium_hex2bin($outputs['ct_hex']);
$aad = sodium_hex2bin($outputs['aad_hex']);
$opened = $receiver->open($ct, $aad);
$this->assertSame($outputs['pt_hex'], sodium_bin2hex($opened));
// Sequence number should increase implicitly
}
}
}
|