1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
use warnings;
use strict;
use Test::More tests => 2 + 26*10;
BEGIN { use_ok "Crypt::Eksblowfish::Family"; }
eval { "Crypt::Eksblowfish::Family"->new("a"x16) };
like $@, qr/Crypt::Eksblowfish::Family::new is not a class method/;
while(<DATA>) {
my($cost, @data) = split;
my($salt, $pt, $ct, $key) = map { pack("H*", $_) } @data;
my $family = Crypt::Eksblowfish::Family->new_family($cost, $salt);
ok $family;
ok $family->can("keysize");
ok $family->can("encrypt");
is $family->cost, $cost;
is $family->salt, $salt;
is $family->blocksize, 8;
is $family->keysize, 0;
eval { $family->encrypt($pt) };
like $@, qr/\ACrypt::Eksblowfish::Family::encrypt called/;
my $cipher = $family->new($key);
ok $cipher;
is $cipher->blocksize, 8;
is $cipher->encrypt($pt), $ct;
is $cipher->decrypt($ct), $pt;
my $pkg = $family->as_class;
like $pkg, qr/\ACrypt::Eksblowfish::Family::/;
is $pkg, $family->as_class;
eval { $pkg->new_family($cost, $salt) };
like $@, qr/\A${pkg}->new_family called/;
ok $pkg->can("keysize");
ok $pkg->can("encrypt");
is $pkg->cost, $cost;
is $pkg->salt, $salt;
is $pkg->blocksize, 8;
is $pkg->keysize, 0;
$cipher = $pkg->new($key);
ok $cipher;
is $cipher->blocksize, 8;
is $cipher->encrypt($pt), $ct;
is $cipher->decrypt($ct), $pt;
is $pkg->as_class, $pkg;
}
1;
__DATA__
0 77b5a8e66bf437f3d03cc6b4cdc7d429 5bb0131eefeb17f7 3f6fdaddcd605c01 13ffc413d7ed649a8551
1 cfd2fe88ead6a5a8dca9523889081f39 ea936213788e916d 0999967ad37fcca1 af5d
2 31188a1d6e1d65b3f71b86bce55a67f4 90ee362f71522361 8217921bcf1deaa3 c8931a6e0efb32937b68
3 d2f0d334b90b356d592c3019ec8eca71 071147d03942894d 2343bba87456e218 0e8c8f04c67af0b2c348
4 9727d95b6d12343ef1411edc0a6ebf1d 59d4a5de34d29cb6 427895b5c7743cf8 e1278612
5 171125170554d7bd6e712fdcc549c00d cb78660a68b67ab9 dfd346f724ddb9c7 0527bb76250e8e606129
6 4b3916adb70a841658aaf4ec7ebb51e8 7ba6a4ca4d6bcc29 325ac35c6b7eb748 7bda
7 d05f3e37e0abb779485cb0c42d4898b2 9fade3ceb8780bdb 38b574199128a028 0365bd0af501
8 e1aedf7b96277f44bf7ee57abe2ad0c4 099845e9998a5d66 ccbdfdd5dd8243eb 3c2dae71
9 0bc4788fa499faac1e54e6c8d3c492d8 bffb573ea1a50827 b663a0daeaf7db86 32711230b5b1ce
|