Crypt-Age-Simple

 view release on metacpan or  search on metacpan

t/03-x25519-fh.t  view on Meta::CPAN

#!/usr/bin/env perl
use strict;
use warnings;
use Test::More 'no_plan';
use Test::Exception;
use File::Temp qw< tempfile >;

use Crypt::Age::Simple qw< :x25519 >;

can_ok __PACKAGE__, qw< age_x25519_decrypt age_x25519_encrypt  >;

my ($public, $secret) = age_x25519_generate_keypair();
my $cleartext = 'foo that bar!';

my ($ifh, $original) = tempfile(UNLINK => 1);
binmode $ifh, ':raw';
print {$ifh} $cleartext;
close $ifh;

$ifh = undef;
open $ifh, '<', $original or die "open($original): $!";
my ($efh, $encrypted) = tempfile(UNLINK => 1);
lives_ok { age_x25519_encrypt_fh($public, $ifh, $efh) }
   'encrypt to filehandle';
close $efh;
close $ifh;
ok -s $encrypted, 'encrypted file was generated';

$efh = undef;
open $efh, '<', $encrypted or die "open($encrypted): $!";
my ($ofh, $decrypted) = tempfile(UNLINK => 1);
lives_ok { age_x25519_decrypt_fh([$secret], $efh, $ofh) }
   'decrypt to filehandle';
close $ofh;
close $efh;
ok -s $decrypted, 'decrypted file was generated';

my $retrieved = do { local(@ARGV, $/) = $decrypted; <> };
is $retrieved, $cleartext, 'decryption was successful across files';

done_testing();



( run in 0.815 second using v1.01-cache-2.11-cpan-ac8be02dad9 )