Crypt-OpenToken
view release on metacpan or search on metacpan
t/crypto-3des168.t view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use if $ENV{AUTOMATED_TESTING}, 'Test::DiagINC'; use MIME::Base64;
use Test2::V0;
use Test2::Require::Module 'Crypt::CBC';
use Test2::Require::Module 'Crypt::DES_EDE3';
use Crypt::OpenToken;
###############################################################################
# TEST DATA
my @test_data = (
{ # generated w/PingId PHP Integration Kit
password_base64 => 'YTY2QzlNdk04ZVk0cUpLeUNYS1crMTlQV0RldWMzdGg=',
token => 'T1RLAQMdbpCui_Mpsin3jAo2Qcr482eYwghHrjVaX6X4WAAAGBrFPLDACb_ZOnmNNKLj26R-dITesg-bdA**',
data => {
foo => 'bar',
bar => 'baz',
},
},
);
###############################################################################
# Decryption; can we parse an OpenToken generated by another implementation?
decryption: {
foreach my $suite (@test_data) {
my $token = $suite->{token};
my $data = $suite->{data};
my $password = decode_base64($suite->{password_base64});
my $factory = Crypt::OpenToken->new(password => $password);
my $decrypted = $factory->parse($token);
is $decrypted->data(), $data, '3DES-168; decrypt externally generated data';
}
}
###############################################################################
# Round-trip; if we encrypt/decrypt the data, do we get the data back out?
round_trip: {
foreach my $suite (@test_data) {
my $token = $suite->{token};
my $data = $suite->{data};
my $password = decode_base64($suite->{password_base64});
my $factory = Crypt::OpenToken->new(password => $password);
my $encrypted = $factory->create(Crypt::OpenToken::CIPHER_DES3, $data);
my $decrypted = $factory->parse($encrypted);
is $decrypted->data(), $data, '3DES-168; encryption/decryption round-trip';
}
}
###############################################################################
done_testing();
( run in 3.303 seconds using v1.01-cache-2.11-cpan-5837b0d9d2c )