| 
<?phpdeclare(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
 }
 }
 }
 
 |